diff options
author | Eike Stepper | 2018-09-14 06:29:37 +0000 |
---|---|---|
committer | Eike Stepper | 2018-09-22 07:02:26 +0000 |
commit | cae31d7fc6d047e936e1c6f220bf3f9c93c5758d (patch) | |
tree | f1d6f83ee5a322bd81e0d8004cce57df4ed9c833 | |
parent | 20f29ab16df76f65f9454ffb70e713fc5354a689 (diff) | |
download | cdo-cae31d7fc6d047e936e1c6f220bf3f9c93c5758d.tar.gz cdo-cae31d7fc6d047e936e1c6f220bf3f9c93c5758d.tar.xz cdo-cae31d7fc6d047e936e1c6f220bf3f9c93c5758d.zip |
[256856] Support model evolution
https://bugs.eclipse.org/bugs/show_bug.cgi?id=256856
134 files changed, 25609 insertions, 41 deletions
diff --git a/features/org.eclipse.emf.cdo-feature/feature.xml b/features/org.eclipse.emf.cdo-feature/feature.xml index 5d77738c13..a4ec54f056 100644 --- a/features/org.eclipse.emf.cdo-feature/feature.xml +++ b/features/org.eclipse.emf.cdo-feature/feature.xml @@ -13,7 +13,7 @@ <feature id="org.eclipse.emf.cdo" label="%featureName" - version="4.7.100.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" license-feature="org.eclipse.emf.cdo.license" license-feature-version="0.0.0"> @@ -210,4 +210,25 @@ version="0.0.0" unpack="false"/> + <plugin + id="org.eclipse.emf.cdo.evolution" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.cdo.evolution.edit" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + + <plugin + id="org.eclipse.emf.cdo.evolution.editor" + download-size="0" + install-size="0" + version="0.0.0" + unpack="false"/> + </feature> diff --git a/features/org.eclipse.emf.cdo-feature/pom.xml b/features/org.eclipse.emf.cdo-feature/pom.xml index 8d4c20dfd6..7f5062d8b2 100644 --- a/features/org.eclipse.emf.cdo-feature/pom.xml +++ b/features/org.eclipse.emf.cdo-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo</artifactId> - <version>4.7.100-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml index d8c4b0f462..46031e6b41 100644 --- a/features/org.eclipse.emf.cdo.sdk-feature/feature.xml +++ b/features/org.eclipse.emf.cdo.sdk-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.emf.cdo.sdk" label="%featureName" - version="5.0.100.qualifier" + version="5.1.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.emf.cdo.sdk-feature/pom.xml b/features/org.eclipse.emf.cdo.sdk-feature/pom.xml index d75aa0cd0c..b9ad5214af 100644 --- a/features/org.eclipse.emf.cdo.sdk-feature/pom.xml +++ b/features/org.eclipse.emf.cdo.sdk-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo.sdk</artifactId> - <version>5.0.100-SNAPSHOT</version> + <version>5.1.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml b/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml index a6c80258d6..dfbd13339c 100644 --- a/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml +++ b/features/org.eclipse.emf.cdo.server.embedded-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.emf.cdo.server.embedded" label="%featureName" - version="4.7.100.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" image="eclipse_update_120.jpg" license-feature="org.eclipse.emf.cdo.license" diff --git a/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml b/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml index b13684a8d3..4b597ea1b2 100644 --- a/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml +++ b/features/org.eclipse.emf.cdo.server.embedded-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.emf.cdo.server.embedded</artifactId> - <version>4.7.100-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/features/org.eclipse.net4j.db-feature/feature.xml b/features/org.eclipse.net4j.db-feature/feature.xml index f960055b96..76569d2a4e 100644 --- a/features/org.eclipse.net4j.db-feature/feature.xml +++ b/features/org.eclipse.net4j.db-feature/feature.xml @@ -12,7 +12,7 @@ <feature id="org.eclipse.net4j.db" label="%featureName" - version="4.7.0.qualifier" + version="4.8.0.qualifier" provider-name="%providerName" license-feature="org.eclipse.emf.cdo.license" license-feature-version="0.0.0"> diff --git a/features/org.eclipse.net4j.db-feature/pom.xml b/features/org.eclipse.net4j.db-feature/pom.xml index 230e5a205d..b13d62102c 100644 --- a/features/org.eclipse.net4j.db-feature/pom.xml +++ b/features/org.eclipse.net4j.db-feature/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo.features</groupId> <artifactId>org.eclipse.net4j.db</artifactId> - <version>4.7.0-SNAPSHOT</version> + <version>4.8.0-SNAPSHOT</version> <packaging>eclipse-feature</packaging> </project> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.classpath b/plugins/org.eclipse.emf.cdo.evolution.edit/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.project b/plugins/org.eclipse.emf.cdo.evolution.edit/.project new file mode 100644 index 0000000000..4ead2df722 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.project @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.evolution.edit</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.oomph.version.VersionBuilder</name> + <arguments> + <dictionary> + <key>check.maven.pom</key> + <value>true</value> + </dictionary> + <dictionary> + <key>ignore.lower.bound.dependency.ranges</key> + <value>true</value> + </dictionary> + <dictionary> + <key>release.path</key> + <value>/org.eclipse.emf.cdo.releng/versions/release.xml</value> + </dictionary> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> + <nature>org.eclipse.oomph.version.VersionNature</nature> + </natures> + <filteredResources> + <filter> + <id>1396938000000</id> + <name></name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-projectRelativePath-matches-true-false-target</arguments> + </matcher> + </filter> + </filteredResources> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..b03b9db471 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,427 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.cleanOutputFolder=clean +org.eclipse.jdt.core.builder.duplicateResourceTask=warning +org.eclipse.jdt.core.builder.invalidClasspath=abort +org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore +org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java +org.eclipse.jdt.core.circularClasspath=error +org.eclipse.jdt.core.classpath.exclusionPatterns=enabled +org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled +org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 +org.eclipse.jdt.core.compiler.problem.APILeak=warning +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=ignore +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedExceptionParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled +org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW +org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=1 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=160 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.incompatibleJDKLevel=ignore +org.eclipse.jdt.core.incompleteClasspath=error diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000000..556ed07a3c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,3 @@ +#Fri Sep 02 05:38:34 CEST 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..222aec0421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,119 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=true +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=true +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=false +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=true +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=_EMFT +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_EMFT +formatter_settings_version=12 +org.eclipse.jdt.ui.exception.name=ex +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.overrideannotation=true +org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment"/><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author Eike Stepper\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment"/><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment"/><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates> +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=false +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.make_local_variable_final=false +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=true +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_parentheses_in_expressions=true +sp_cleanup.use_this_for_non_static_field_access=true +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=true +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..864e30fe5d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..b050639a54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.tasks.ui.prefs @@ -0,0 +1,4 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +project.repository.kind=bugzilla +project.repository.url=https\://bugs.eclipse.org/bugs diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..97c11e6725 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.mylyn.team.ui.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +commit.comment.template=[${task.id}] ${task.description}\r\n\r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000000..0c17d59e45 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,95 @@ +#Thu Feb 04 09:44:24 CET 2010 +ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error +ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error +CLASS_ELEMENT_TYPE_ADDED_METHOD=Error +CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error +CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error +CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error +CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error +ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error +ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error +ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +FIELD_ELEMENT_TYPE_ADDED_VALUE=Error +FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error +FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error +FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error +FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error +ILLEGAL_EXTEND=Warning +ILLEGAL_IMPLEMENT=Warning +ILLEGAL_INSTANTIATE=Warning +ILLEGAL_OVERRIDE=Warning +ILLEGAL_REFERENCE=Warning +INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error +INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error +INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error +INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +INVALID_JAVADOC_TAG=Ignore +INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error +MISSING_EE_DESCRIPTIONS=Warning +LEAK_EXTEND=Warning +LEAK_FIELD_DECL=Warning +LEAK_IMPLEMENT=Warning +LEAK_METHOD_PARAM=Warning +LEAK_METHOD_RETURN_TYPE=Warning +METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error +METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error +UNUSED_PROBLEM_FILTERS=Ignore +automatically_removed_unused_problem_filters=Disabled +eclipse.preferences.version=1 +incompatible_api_component_version=Error +incompatible_api_component_version_include_major_without_breaking_change=Disabled +incompatible_api_component_version_include_minor_without_api_change=Disabled +invalid_since_tag_version=Error +malformed_since_tag=Error +missing_since_tag=Error +report_api_breakage_when_major_version_incremented=Disabled +report_resolution_errors_api_component=Warning diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..fe01bb701d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/.settings/org.eclipse.pde.prefs @@ -0,0 +1,31 @@ +#Thu Feb 04 09:44:24 CET 2010 +compilers.f.unresolved-features=1 +compilers.f.unresolved-plugins=1 +compilers.incompatible-environment=1 +compilers.p.build=1 +compilers.p.build.bin.includes=1 +compilers.p.build.java.compliance=1 +compilers.p.build.missing.output=2 +compilers.p.build.output.library=1 +compilers.p.build.source.library=1 +compilers.p.build.src.includes=1 +compilers.p.deprecated=2 +compilers.p.discouraged-class=1 +compilers.p.internal=1 +compilers.p.missing-packages=1 +compilers.p.missing-version-export-package=1 +compilers.p.missing-version-import-package=1 +compilers.p.missing-version-require-bundle=1 +compilers.p.no-required-att=0 +compilers.p.not-externalized-att=2 +compilers.p.unknown-attribute=1 +compilers.p.unknown-class=1 +compilers.p.unknown-element=1 +compilers.p.unknown-identifier=1 +compilers.p.unknown-resource=1 +compilers.p.unresolved-ex-points=0 +compilers.p.unresolved-import=0 +compilers.s.create-docs=false +compilers.s.doc-folder=doc +compilers.s.open-tags=1 +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.evolution.edit/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..eea0f2d76d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/META-INF/MANIFEST.MF @@ -0,0 +1,19 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.evolution.edit;singleton:=true +Automatic-Module-Name: org.eclipse.emf.cdo.evolution.edit +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: org.eclipse.emf.cdo.evolution.provider.EvolutionEditPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: org.eclipse.emf.cdo.evolution.provider;version="1.0.0" +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.cdo.evolution;bundle-version="[1.0.0,2.0.0)";visibility:=reexport, + org.eclipse.emf.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.cdo.edit;bundle-version="[4.0.0,5.0.0)" +Bundle-ActivationPolicy: lazy diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/build.properties b/plugins/org.eclipse.emf.cdo.evolution.edit/build.properties new file mode 100644 index 0000000000..6e3e902e80 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin/ diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Evolution.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Evolution.gif Binary files differnew file mode 100644 index 0000000000..df2990f5c2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Evolution.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/FeaturePathMigration.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/FeaturePathMigration.gif Binary files differnew file mode 100644 index 0000000000..d92f34c8ae --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/FeaturePathMigration.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Model.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Model.gif Binary files differnew file mode 100644 index 0000000000..0b60dcc395 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Model.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/ModelSetChange.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/ModelSetChange.gif Binary files differnew file mode 100644 index 0000000000..f988003212 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/ModelSetChange.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Package.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Package.gif Binary files differnew file mode 100644 index 0000000000..d931a97fcc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Package.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/PropertyChange.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/PropertyChange.gif Binary files differnew file mode 100644 index 0000000000..ce8bdb99b7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/PropertyChange.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Release.gif b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Release.gif Binary files differnew file mode 100644 index 0000000000..ce096aafbc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/icons/full/obj16/Release.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.properties b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.properties new file mode 100644 index 0000000000..eb5cb8ea7b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.properties @@ -0,0 +1,85 @@ +# + +pluginName = CDO Model Repository Evolution Edit Support +providerName = Eclipse Modeling Project + +_UI_CreateChild_text = {0} +_UI_CreateChild_text2 = {1} {0} +_UI_CreateChild_text3 = {1} +_UI_CreateChild_tooltip = Create New {0} Under {1} Feature +_UI_CreateChild_description = Create a new child of type {0} for the {1} feature of the selected {2}. +_UI_CreateSibling_description = Create a new sibling of type {0} for the selected {2}, under the {1} feature of their parent. + +_UI_PropertyDescriptor_description = The {0} of the {1} + +##### Sorted: + +_UI_ChangeKind_ADDED_literal = ADDED +_UI_ChangeKind_CHANGED_literal = CHANGED +_UI_ChangeKind_COPIED_literal = COPIED +_UI_ChangeKind_MOVED_literal = MOVED +_UI_ChangeKind_NONE_literal = NONE +_UI_ChangeKind_REMOVED_literal = REMOVED +_UI_Change_children_feature = Children +_UI_Change_parent_feature = Parent +_UI_Change_type = Change +_UI_ElementChange_kind_feature = Kind +_UI_ElementChange_newElement_feature = New Element +_UI_ElementChange_oldElement_feature = Old Element +_UI_ElementChange_type = Element Change +_UI_Evolution_allPackages_feature = All Packages +_UI_Evolution_latestRelease_feature = Latest Release +_UI_Evolution_missingPackages_feature = Missing Packages +_UI_Evolution_models_feature = Models +_UI_Evolution_orderedReleases_feature = Ordered Releases +_UI_Evolution_releases_feature = Releases +_UI_Evolution_rootPackages_feature = Root Packages +_UI_Evolution_type = Evolution +_UI_Evolution_useEcorePackage_feature = Use Ecore Package +_UI_Evolution_useEresourcePackage_feature = Use Eresource Package +_UI_Evolution_useEtypesPackage_feature = Use Etypes Package +_UI_FeaturePathMigration_featurePath_feature = Feature Path +_UI_FeaturePathMigration_fromClass_feature = From Class +_UI_FeaturePathMigration_toClass_feature = To Class +_UI_FeaturePathMigration_type = Feature Path Migration +_UI_Migration_diagnosticID_feature = Diagnostic ID +_UI_Migration_modelSet_feature = Model Set +_UI_Migration_type = Migration +_UI_ModelSetChange_newModelSet_feature = New Model Set +_UI_ModelSetChange_oldModelSet_feature = Old Model Set +_UI_ModelSetChange_type = Changes +_UI_ModelSet_allPackages_feature = All Packages +_UI_ModelSet_change_feature = Change +_UI_ModelSet_migrations_feature = Migrations +_UI_ModelSet_missingPackages_feature = Missing Packages +_UI_ModelSet_models_feature = Models +_UI_ModelSet_rootPackages_feature = Root Packages +_UI_ModelSet_type = Model Set +_UI_Model_allPackages_feature = All Packages +_UI_Model_evolution_feature = Evolution +_UI_Model_missingPackages_feature = Missing Packages +_UI_Model_modelSet_feature = Model Set +_UI_Model_referencedPackages_feature = Referenced Packages +_UI_Model_rootPackage_feature = Root Package +_UI_Model_type = Model +_UI_Model_uRI_feature = URI +_UI_PropertyChange_feature_feature = Feature +_UI_PropertyChange_kind_feature = Kind +_UI_PropertyChange_newValue_feature = New Value +_UI_PropertyChange_oldValue_feature = Old Value +_UI_PropertyChange_type = Property Change +_UI_Release_allPackages_feature = All Packages +_UI_Release_date_feature = Date +_UI_Release_evolution_feature = Evolution +_UI_Release_migrations_feature = Migrations +_UI_Release_nextRelease_feature = Next Release +_UI_Release_previousRelease_feature = Previous Release +_UI_Release_rootPackages_feature = Root Packages +_UI_Release_type = Release +_UI_Release_version_feature = Version +_UI_Unknown_datatype= Value +_UI_Unknown_feature = Unspecified +_UI_Unknown_type = Object +_UI_Evolution_uniqueNamespaceURIs_feature = Unique Namespace UR Is +_UI_Evolution_uniqueNamespaces_feature = Unique Namespaces +_UI_Evolution_nextReleaseVersion_feature = Next Release Version diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.xml b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.xml new file mode 100644 index 0000000000..04468135cc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/plugin.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.emf.edit.itemProviderAdapterFactories"> + <!-- @generated evolution --> + <factory + uri="http://www.eclipse.org/emf/CDO/evolution/1.0.0" + class="org.eclipse.emf.cdo.evolution.provider.EvolutionItemProviderAdapterFactory" + supportedTypes= + "org.eclipse.emf.edit.provider.IEditingDomainItemProvider + org.eclipse.emf.edit.provider.IStructuredItemContentProvider + org.eclipse.emf.edit.provider.ITreeItemContentProvider + org.eclipse.emf.edit.provider.IItemLabelProvider + org.eclipse.emf.edit.provider.IItemPropertySource + org.eclipse.emf.edit.provider.IItemColorProvider + org.eclipse.emf.edit.provider.IItemFontProvider + org.eclipse.emf.edit.provider.IItemStyledLabelProvider"/> + </extension> + +</plugin> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/pom.xml b/plugins/org.eclipse.emf.cdo.evolution.edit/pom.xml new file mode 100644 index 0000000000..a39e32d09e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/pom.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2017 Eike Stepper (Loehne, Germany) and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Eike Stepper - initial API and implementation +--> +<project + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.plugins</artifactId> + <version>4.7.0-SNAPSHOT</version> + <relativePath>../../releng/org.eclipse.emf.cdo.releng.parent/plugins</relativePath> + </parent> + + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.evolution.edit</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + +</project> diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ChangeItemProvider.java new file mode 100644 index 0000000000..ae805298d6 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ChangeItemProvider.java @@ -0,0 +1,191 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Change} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ChangeItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ChangeItemProvider(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); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.CHANGE__CHILDREN); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_Change_type")); + } + + /** + * 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); + + switch (notification.getFeatureID(Change.class)) + { + case EvolutionPackage.CHANGE__CHILDREN: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ElementChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ElementChangeItemProvider.java new file mode 100644 index 0000000000..138670dacb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ElementChangeItemProvider.java @@ -0,0 +1,234 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.StyledString.Style; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.ElementChange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ElementChangeItemProvider extends ChangeItemProvider +{ + private static final URI RED = URI.createURI("color://rgb/200/0/0"); //$NON-NLS-1$ + + private static final URI GREEN = URI.createURI("color://rgb/0/160/0"); //$NON-NLS-1$ + + static final Style REMOVAL_STYLER = Style.newBuilder().setForegroundColor(RED).toStyle(); + + static final Style ADDITION_STYLER = Style.newBuilder().setForegroundColor(GREEN).toStyle(); + + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ElementChangeItemProvider(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); + + addOldElementPropertyDescriptor(object); + addNewElementPropertyDescriptor(object); + addKindPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Old Element feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOldElementPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ElementChange_oldElement_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ElementChange_oldElement_feature", "_UI_ElementChange_type"), + EvolutionPackage.Literals.ELEMENT_CHANGE__OLD_ELEMENT, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the New Element feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNewElementPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ElementChange_newElement_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ElementChange_newElement_feature", "_UI_ElementChange_type"), + EvolutionPackage.Literals.ELEMENT_CHANGE__NEW_ELEMENT, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Kind feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addKindPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ElementChange_kind_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ElementChange_kind_feature", "_UI_ElementChange_type"), + EvolutionPackage.Literals.ELEMENT_CHANGE__KIND, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + @Override + public Object getImage(Object object) + { + ElementChange elementChange = (ElementChange)object; + EModelElement element = elementChange.getElement(); + + if (element != null) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)getRootAdapterFactory().adapt(element, IItemLabelProvider.class); + if (labelProvider != null) + { + return labelProvider.getImage(element); + } + } + + return null; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + ElementChange elementChange = (ElementChange)object; + EModelElement element = elementChange.getElement(); + + StyledString styledLabel = new StyledString(); + ChangeKind kind = elementChange.getKind(); + + IItemLabelProvider labelProvider = (IItemLabelProvider)getRootAdapterFactory().adapt(element, IItemLabelProvider.class); + if (labelProvider != null) + { + String text = labelProvider.getText(element); + if (kind == ChangeKind.ADDED || kind == ChangeKind.COPIED || kind == ChangeKind.MOVED) + { + styledLabel.append(text, ADDITION_STYLER); + } + else if (kind == ChangeKind.REMOVED) + { + styledLabel.append(text, REMOVAL_STYLER); + } + else + { + styledLabel.append(text); + } + } + else + { + styledLabel.append(getString("_UI_ElementChange_type")); + } + + String label = kind == null || kind == ChangeKind.NONE ? null : kind.toString(); + if (label != null) + { + styledLabel.append(" " + label, StyledString.Style.DECORATIONS_STYLER); + } + + return styledLabel; + } + + /** + * 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); + + switch (notification.getFeatureID(ElementChange.class)) + { + case EvolutionPackage.ELEMENT_CHANGE__KIND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + 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.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionEditPlugin.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionEditPlugin.java new file mode 100644 index 0000000000..d3b8f2a27b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionEditPlugin.java @@ -0,0 +1,99 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.common.EMFPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +import org.eclipse.emf.ecore.provider.EcoreEditPlugin; + +/** + * This is the central singleton for the Evolution edit plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class EvolutionEditPlugin extends EMFPlugin +{ + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final EvolutionEditPlugin INSTANCE = new EvolutionEditPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionEditPlugin() + { + super + (new ResourceLocator [] + { + EcoreEditPlugin.INSTANCE, + }); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() + { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() + { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipsePlugin + { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() + { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProvider.java new file mode 100644 index 0000000000..ceac47f72e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProvider.java @@ -0,0 +1,359 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Evolution} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionItemProvider extends ModelSetItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionItemProvider(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); + + addUseEcorePackagePropertyDescriptor(object); + addUseEresourcePackagePropertyDescriptor(object); + addUseEtypesPackagePropertyDescriptor(object); + addUniqueNamespacesPropertyDescriptor(object); + addRootPackagesPropertyDescriptor(object); + addAllPackagesPropertyDescriptor(object); + addMissingPackagesPropertyDescriptor(object); + addOrderedReleasesPropertyDescriptor(object); + addLatestReleasePropertyDescriptor(object); + addNextReleaseVersionPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Use Ecore Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUseEcorePackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_useEcorePackage_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_useEcorePackage_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__USE_ECORE_PACKAGE, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Use Eresource Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUseEresourcePackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_useEresourcePackage_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_useEresourcePackage_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__USE_ERESOURCE_PACKAGE, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Use Etypes Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUseEtypesPackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_useEtypesPackage_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_useEtypesPackage_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__USE_ETYPES_PACKAGE, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Unique Namespaces feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addUniqueNamespacesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_uniqueNamespaces_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_uniqueNamespaces_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__UNIQUE_NAMESPACES, true, false, false, ItemPropertyDescriptor.BOOLEAN_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Root Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRootPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_rootPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_rootPackages_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__ROOT_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the All Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAllPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_allPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_allPackages_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__ALL_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Ordered Releases feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOrderedReleasesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_orderedReleases_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_orderedReleases_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__ORDERED_RELEASES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Latest Release feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addLatestReleasePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_latestRelease_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_latestRelease_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__LATEST_RELEASE, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Next Release Version feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNextReleaseVersionPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_nextReleaseVersion_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_nextReleaseVersion_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__NEXT_RELEASE_VERSION, false, false, false, ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Missing Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMissingPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Evolution_missingPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Evolution_missingPackages_feature", "_UI_Evolution_type"), + EvolutionPackage.Literals.EVOLUTION__MISSING_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Collection<? extends EStructuralFeature> getChildrenFeaturesGen(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.EVOLUTION__MODELS); + childrenFeatures.add(EvolutionPackage.Literals.EVOLUTION__ORDERED_RELEASES); + } + return childrenFeatures; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + @SuppressWarnings("unchecked") + List<EStructuralFeature> childrenFeatures = (List<EStructuralFeature>)getChildrenFeaturesGen(object); + + childrenFeatures.remove(EvolutionPackage.Literals.EVOLUTION__MODELS); + childrenFeatures.add(0, EvolutionPackage.Literals.EVOLUTION__MODELS); + + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + @Override + protected boolean hasChildren(Object object, boolean optimized) + { + Evolution evolution = (Evolution)object; + return !(evolution.getModels().isEmpty() && evolution.getReleases().isEmpty()); + } + + /** + * This returns Evolution.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Evolution")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_Evolution_type")); + } + + /** + * 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); + + switch (notification.getFeatureID(Evolution.class)) + { + case EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE: + case EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE: + case EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE: + case EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES: + case EvolutionPackage.EVOLUTION__RELEASES: + case EvolutionPackage.EVOLUTION__NEXT_RELEASE_VERSION: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case EvolutionPackage.EVOLUTION__MODELS: + case EvolutionPackage.EVOLUTION__ORDERED_RELEASES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + 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); + + newChildDescriptors.add(createChildParameter(EvolutionPackage.Literals.EVOLUTION__MODELS, EvolutionFactory.eINSTANCE.createModel())); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProviderAdapterFactory.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProviderAdapterFactory.java new file mode 100644 index 0000000000..9560a78d5f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/EvolutionItemProviderAdapterFactory.java @@ -0,0 +1,443 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.util.EvolutionAdapterFactory; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.ChangeNotifier; +import org.eclipse.emf.edit.provider.ChildCreationExtenderManager; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IChangeNotifier; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IDisposable; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.INotifyChangedListener; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * This is the factory that is used to provide the interfaces needed to support Viewers. + * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}. + * The adapters also support Eclipse property sheets. + * Note that most of the adapters are shared among multiple instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionItemProviderAdapterFactory extends EvolutionAdapterFactory + implements ComposeableAdapterFactory, IChangeNotifier, IDisposable, IChildCreationExtender +{ + /** + * This keeps track of the root adapter factory that delegates to this adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory parentAdapterFactory; + + /** + * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IChangeNotifier changeNotifier = new ChangeNotifier(); + + /** + * This helps manage the child creation extenders. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ChildCreationExtenderManager childCreationExtenderManager = new ChildCreationExtenderManager(EvolutionEditPlugin.INSTANCE, + EvolutionPackage.eNS_URI); + + /** + * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Object> supportedTypes = new ArrayList<Object>(); + + /** + * This constructs an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionItemProviderAdapterFactory() + { + supportedTypes.add(IEditingDomainItemProvider.class); + supportedTypes.add(IStructuredItemContentProvider.class); + supportedTypes.add(ITreeItemContentProvider.class); + supportedTypes.add(IItemLabelProvider.class); + supportedTypes.add(IItemPropertySource.class); + supportedTypes.add(IItemColorProvider.class); + supportedTypes.add(IItemFontProvider.class); + supportedTypes.add(IItemStyledLabelProvider.class); + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.Model} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelItemProvider modelItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.Model}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createModelAdapter() + { + if (modelItemProvider == null) + { + modelItemProvider = new ModelItemProvider(this); + } + + return modelItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.Evolution} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionItemProvider evolutionItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.Evolution}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createEvolutionAdapter() + { + if (evolutionItemProvider == null) + { + evolutionItemProvider = new EvolutionItemProvider(this); + } + + return evolutionItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.Release} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ReleaseItemProvider releaseItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.Release}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createReleaseAdapter() + { + if (releaseItemProvider == null) + { + releaseItemProvider = new ReleaseItemProvider(this); + } + + return releaseItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.ModelSetChange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelSetChangeItemProvider modelSetChangeItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.ModelSetChange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createModelSetChangeAdapter() + { + if (modelSetChangeItemProvider == null) + { + modelSetChangeItemProvider = new ModelSetChangeItemProvider(this); + } + + return modelSetChangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.ElementChange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ElementChangeItemProvider elementChangeItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.ElementChange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createElementChangeAdapter() + { + if (elementChangeItemProvider == null) + { + elementChangeItemProvider = new ElementChangeItemProvider(this); + } + + return elementChangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.PropertyChange} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertyChangeItemProvider propertyChangeItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.PropertyChange}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createPropertyChangeAdapter() + { + if (propertyChangeItemProvider == null) + { + propertyChangeItemProvider = new PropertyChangeItemProvider(this); + } + + return propertyChangeItemProvider; + } + + /** + * This keeps track of the one adapter used for all {@link org.eclipse.emf.cdo.evolution.FeaturePathMigration} instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FeaturePathMigrationItemProvider featurePathMigrationItemProvider; + + /** + * This creates an adapter for a {@link org.eclipse.emf.cdo.evolution.FeaturePathMigration}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter createFeaturePathMigrationAdapter() + { + if (featurePathMigrationItemProvider == null) + { + featurePathMigrationItemProvider = new FeaturePathMigrationItemProvider(this); + } + + return featurePathMigrationItemProvider; + } + + /** + * This returns the root adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ComposeableAdapterFactory getRootAdapterFactory() + { + return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory(); + } + + /** + * This sets the composed adapter factory that contains this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) + { + this.parentAdapterFactory = parentAdapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isFactoryForType(Object type) + { + return supportedTypes.contains(type) || super.isFactoryForType(type); + } + + /** + * This implementation substitutes the factory itself as the key for the adapter. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Adapter adapt(Notifier notifier, Object type) + { + return super.adapt(notifier, this); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object adapt(Object object, Object type) + { + if (isFactoryForType(type)) + { + Object adapter = super.adapt(object, type); + if (!(type instanceof Class<?>) || ((Class<?>)type).isInstance(adapter)) + { + return adapter; + } + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public List<IChildCreationExtender> getChildCreationExtenders() + { + return childCreationExtenderManager.getChildCreationExtenders(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Collection<?> getNewChildDescriptors(Object object, EditingDomain editingDomain) + { + return childCreationExtenderManager.getNewChildDescriptors(object, editingDomain); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ResourceLocator getResourceLocator() + { + return childCreationExtenderManager; + } + + /** + * This adds a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addListener(INotifyChangedListener notifyChangedListener) + { + changeNotifier.addListener(notifyChangedListener); + } + + /** + * This removes a listener. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeListener(INotifyChangedListener notifyChangedListener) + { + changeNotifier.removeListener(notifyChangedListener); + } + + /** + * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void fireNotifyChanged(Notification notification) + { + changeNotifier.fireNotifyChanged(notification); + + if (parentAdapterFactory != null) + { + parentAdapterFactory.fireNotifyChanged(notification); + } + } + + /** + * This disposes all of the item providers created by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void dispose() + { + if (modelItemProvider != null) + { + modelItemProvider.dispose(); + } + if (evolutionItemProvider != null) + { + evolutionItemProvider.dispose(); + } + if (releaseItemProvider != null) + { + releaseItemProvider.dispose(); + } + if (modelSetChangeItemProvider != null) + { + modelSetChangeItemProvider.dispose(); + } + if (elementChangeItemProvider != null) + { + elementChangeItemProvider.dispose(); + } + if (propertyChangeItemProvider != null) + { + propertyChangeItemProvider.dispose(); + } + if (featurePathMigrationItemProvider != null) + { + featurePathMigrationItemProvider.dispose(); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/FeaturePathMigrationItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/FeaturePathMigrationItemProvider.java new file mode 100644 index 0000000000..f2b38b4f86 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/FeaturePathMigrationItemProvider.java @@ -0,0 +1,182 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; + +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.emf.edit.provider.StyledString; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.FeaturePathMigration} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class FeaturePathMigrationItemProvider extends MigrationItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FeaturePathMigrationItemProvider(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); + + addFromClassPropertyDescriptor(object); + addToClassPropertyDescriptor(object); + addFeaturePathPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the From Class feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addFromClassPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_FeaturePathMigration_fromClass_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_FeaturePathMigration_fromClass_feature", "_UI_FeaturePathMigration_type"), + EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FROM_CLASS, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the To Class feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addToClassPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_FeaturePathMigration_toClass_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_FeaturePathMigration_toClass_feature", "_UI_FeaturePathMigration_type"), + EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__TO_CLASS, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Feature Path feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addFeaturePathPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_FeaturePathMigration_featurePath_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_FeaturePathMigration_featurePath_feature", "_UI_FeaturePathMigration_type"), + EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FEATURE_PATH, true, false, true, null, null, null)); + } + + /** + * This returns FeaturePathMigration.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/FeaturePathMigration")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + String label = ((FeaturePathMigration)object).getDiagnosticID(); + StyledString styledLabel = new StyledString(); + if (label == null || label.length() == 0) + { + styledLabel.append(getString("_UI_FeaturePathMigration_type"), StyledString.Style.QUALIFIER_STYLER); + } + else + { + styledLabel.append(getString("_UI_FeaturePathMigration_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); + } + return styledLabel; + } + + /** + * 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.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/MigrationItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/MigrationItemProvider.java new file mode 100644 index 0000000000..0577be42e5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/MigrationItemProvider.java @@ -0,0 +1,167 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Migration; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Migration} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class MigrationItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public MigrationItemProvider(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); + + } + return itemPropertyDescriptors; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + String label = ((Migration)object).getDiagnosticID(); + StyledString styledLabel = new StyledString(); + if (label == null || label.length() == 0) + { + styledLabel.append(getString("_UI_Migration_type"), StyledString.Style.QUALIFIER_STYLER); + } + else + { + styledLabel.append(getString("_UI_Migration_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); + } + return styledLabel; + } + + /** + * 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); + + switch (notification.getFeatureID(Migration.class)) + { + case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java new file mode 100644 index 0000000000..bf209fec5a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelItemProvider.java @@ -0,0 +1,331 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Model; + +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.command.CommandParameter; +import org.eclipse.emf.edit.command.DragAndDropCommand; +import org.eclipse.emf.edit.command.SetCommand; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Model} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelItemProvider(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); + + addURIPropertyDescriptor(object); + addRootPackagePropertyDescriptor(object); + addAllPackagesPropertyDescriptor(object); + addReferencedPackagesPropertyDescriptor(object); + addMissingPackagesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the URI feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addURIPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_uRI_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_uRI_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__URI, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Root Package feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addRootPackagePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_rootPackage_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_rootPackage_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__ROOT_PACKAGE, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the All Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAllPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_allPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_allPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__ALL_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Referenced Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addReferencedPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_referencedPackages_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_Model_referencedPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__REFERENCED_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This adds a property descriptor for the Missing Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addMissingPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Model_missingPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Model_missingPackages_feature", "_UI_Model_type"), + EvolutionPackage.Literals.MODEL__MISSING_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.MODEL__ROOT_PACKAGE); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * This returns Model.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Model")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + URI labelValue = ((Model)object).getURI(); + String label = labelValue == null ? null : labelValue.toString(); + StyledString styledLabel = new StyledString(); + if (label == null || label.length() == 0) + { + styledLabel.append(getString("_UI_Model_type"), StyledString.Style.QUALIFIER_STYLER); + } + else + { + styledLabel.append(getString("_UI_Model_type"), StyledString.Style.QUALIFIER_STYLER).append(" " + label); + } + return styledLabel; + } + + /** + * 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); + + switch (notification.getFeatureID(Model.class)) + { + case EvolutionPackage.MODEL__URI: + case EvolutionPackage.MODEL__ALL_PACKAGES: + case EvolutionPackage.MODEL__REFERENCED_PACKAGES: + case EvolutionPackage.MODEL__MISSING_PACKAGES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case EvolutionPackage.MODEL__ROOT_PACKAGE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + 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); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + + @Override + public Command createCommand(Object owner, EditingDomain domain, Class<? extends Command> commandClass, CommandParameter commandParameter) + { + if (commandClass == DragAndDropCommand.class) + { + // DragAndDropCommand.Detail detail = (DragAndDropCommand.Detail)commandParameter.getFeature(); + Collection<?> collection = commandParameter.getCollection(); + if (domain != null && collection.size() == 1 && commandParameter.getOwner() != domain.getResourceSet()) + { + Object element = collection.iterator().next(); + if (element instanceof URI) + { + URI uri = (URI)element; + return SetCommand.create(domain, owner, EvolutionPackage.Literals.MODEL__URI, uri); + } + + // return createDragAndDropCommand(domain, commandParameter.getOwner(), detail.location, detail.operations, + // detail.operation, + // commandParameter.getCollection()); + } + } + + return super.createCommand(owner, domain, commandClass, commandParameter); + } + + @Override + protected boolean isWrappingNeeded(Object object) + { + // Wrapping is always needed because of the derived cross reference 'rootPackage', which is shown as children. + return true; + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetChangeItemProvider.java new file mode 100644 index 0000000000..c0746ec255 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetChangeItemProvider.java @@ -0,0 +1,156 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; + +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.emf.edit.provider.StyledString; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.ModelSetChange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelSetChangeItemProvider extends ChangeItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSetChangeItemProvider(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); + + addOldModelSetPropertyDescriptor(object); + addNewModelSetPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Old Model Set feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOldModelSetPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ModelSetChange_oldModelSet_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelSetChange_oldModelSet_feature", "_UI_ModelSetChange_type"), + EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the New Model Set feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNewModelSetPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_ModelSetChange_newModelSet_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_ModelSetChange_newModelSet_feature", "_UI_ModelSetChange_type"), + EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, true, false, true, null, null, null)); + } + + /** + * This returns ModelSetChange.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/ModelSetChange")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_ModelSetChange_type")); + } + + /** + * 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.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetItemProvider.java new file mode 100644 index 0000000000..7969d8e777 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ModelSetItemProvider.java @@ -0,0 +1,196 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.ModelSet; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.IChildCreationExtender; +import org.eclipse.emf.edit.provider.IEditingDomainItemProvider; +import org.eclipse.emf.edit.provider.IItemColorProvider; +import org.eclipse.emf.edit.provider.IItemFontProvider; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.IItemStyledLabelProvider; +import org.eclipse.emf.edit.provider.IStructuredItemContentProvider; +import org.eclipse.emf.edit.provider.ITreeItemContentProvider; +import org.eclipse.emf.edit.provider.ItemProviderAdapter; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.ModelSet} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ModelSetItemProvider extends ItemProviderAdapter implements IEditingDomainItemProvider, IStructuredItemContentProvider, ITreeItemContentProvider, + IItemLabelProvider, IItemPropertySource, IItemColorProvider, IItemFontProvider, IItemStyledLabelProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSetItemProvider(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); + + } + return itemPropertyDescriptors; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.MODEL_SET__CHANGE); + childrenFeatures.add(EvolutionPackage.Literals.MODEL_SET__MIGRATIONS); + } + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + return hasChildren(object, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getStyledText(Object object) + { + return new StyledString(getString("_UI_ModelSet_type")); + } + + /** + * 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); + + switch (notification.getFeatureID(ModelSet.class)) + { + case EvolutionPackage.MODEL_SET__CHANGE: + case EvolutionPackage.MODEL_SET__MIGRATIONS: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + 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); + + newChildDescriptors.add(createChildParameter(EvolutionPackage.Literals.MODEL_SET__MIGRATIONS, EvolutionFactory.eINSTANCE.createFeaturePathMigration())); + } + + /** + * Return the resource locator for this item provider's resources. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return ((IChildCreationExtender)adapterFactory).getResourceLocator(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/PropertyChangeItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/PropertyChangeItemProvider.java new file mode 100644 index 0000000000..cfa947d8c4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/PropertyChangeItemProvider.java @@ -0,0 +1,294 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.PropertyChange; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.ENamedElement; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.PropertyChange} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class PropertyChangeItemProvider extends ChangeItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PropertyChangeItemProvider(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); + + addFeaturePropertyDescriptor(object); + addOldValuePropertyDescriptor(object); + addNewValuePropertyDescriptor(object); + addKindPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Feature feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addFeaturePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_feature_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_feature_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__FEATURE, true, false, true, null, null, null)); + } + + /** + * This adds a property descriptor for the Old Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addOldValuePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_oldValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_oldValue_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__OLD_VALUE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the New Value feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addNewValuePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_newValue_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_newValue_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__NEW_VALUE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Kind feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addKindPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_PropertyChange_kind_feature"), + getString("_UI_PropertyDescriptor_description", "_UI_PropertyChange_kind_feature", "_UI_PropertyChange_type"), + EvolutionPackage.Literals.PROPERTY_CHANGE__KIND, false, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This returns PropertyChange.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/PropertyChange")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + PropertyChange propertyChange = (PropertyChange)object; + EStructuralFeature feature = propertyChange.getFeature(); + + StyledString styledLabel = new StyledString(); + if (feature != null) + { + String text = null; + + EClass eClass = feature.getEContainingClass(); + IItemPropertySource propertySource = (IItemPropertySource)getRootAdapterFactory().adapt(eClass, IItemPropertySource.class); + if (propertySource != null) + { + for (IItemPropertyDescriptor propertyDescriptor : propertySource.getPropertyDescriptors(eClass)) + { + if (propertyDescriptor.getFeature(eClass) == feature) + { + text = propertyDescriptor.getDisplayName(eClass); + break; + } + } + } + + if (text == null) + { + text = feature.getName(); + } + + ChangeKind kind = propertyChange.getKind(); + if (kind == ChangeKind.ADDED || kind == ChangeKind.COPIED) + { + styledLabel.append(text, ElementChangeItemProvider.ADDITION_STYLER); + } + else if (kind == ChangeKind.REMOVED) + { + styledLabel.append(text, ElementChangeItemProvider.REMOVAL_STYLER); + } + else + { + styledLabel.append(text); + } + } + else + { + // Can't really happen. + styledLabel.append(getString("_UI_PropertyChange_type"), StyledString.Style.QUALIFIER_STYLER); + } + + StringBuilder builder = new StringBuilder(" "); + formatValue(propertyChange.getOldValue(), builder); + builder.append(" \u279d "); + formatValue(propertyChange.getNewValue(), builder); + + styledLabel.append(builder.toString(), StyledString.Style.DECORATIONS_STYLER); + return styledLabel; + } + + /** + * 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); + + switch (notification.getFeatureID(PropertyChange.class)) + { + case EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE: + case EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE: + case EvolutionPackage.PROPERTY_CHANGE__KIND: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + } + 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); + } + + private static void formatValue(Object value, StringBuilder builder) + { + if (value instanceof List<?>) + { + List<?> list = (List<?>)value; + boolean first = true; + for (Object element : list) + { + if (first) + { + first = false; + } + else + { + builder.append(", "); + } + + formatValueSingle(element, builder); + } + } + else + { + formatValueSingle(value, builder); + } + } + + private static void formatValueSingle(Object value, StringBuilder builder) + { + if (value instanceof ENamedElement) + { + builder.append(((ENamedElement)value).getName()); + } + else + { + builder.append(String.valueOf(value)); + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ReleaseItemProvider.java b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ReleaseItemProvider.java new file mode 100644 index 0000000000..2576c88618 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.edit/src/org/eclipse/emf/cdo/evolution/provider/ReleaseItemProvider.java @@ -0,0 +1,256 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.provider; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Release; + +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcoreFactory; +import org.eclipse.emf.edit.provider.ComposeableAdapterFactory; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.ItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.StyledString; +import org.eclipse.emf.edit.provider.ViewerNotification; + +import java.util.Collection; +import java.util.Date; +import java.util.List; + +/** + * This is the item provider adapter for a {@link org.eclipse.emf.cdo.evolution.Release} object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class ReleaseItemProvider extends ModelSetItemProvider +{ + /** + * This constructs an instance from a factory and a notifier. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReleaseItemProvider(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); + + addVersionPropertyDescriptor(object); + addDatePropertyDescriptor(object); + addAllPackagesPropertyDescriptor(object); + } + return itemPropertyDescriptors; + } + + /** + * This adds a property descriptor for the Date feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addDatePropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Release_date_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Release_date_feature", "_UI_Release_type"), + EvolutionPackage.Literals.RELEASE__DATE, true, false, false, ItemPropertyDescriptor.GENERIC_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the Version feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addVersionPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Release_version_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Release_version_feature", "_UI_Release_type"), + EvolutionPackage.Literals.RELEASE__VERSION, true, false, false, ItemPropertyDescriptor.INTEGRAL_VALUE_IMAGE, null, null)); + } + + /** + * This adds a property descriptor for the All Packages feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void addAllPackagesPropertyDescriptor(Object object) + { + itemPropertyDescriptors.add(createItemPropertyDescriptor(((ComposeableAdapterFactory)adapterFactory).getRootAdapterFactory(), getResourceLocator(), + getString("_UI_Release_allPackages_feature"), getString("_UI_PropertyDescriptor_description", "_UI_Release_allPackages_feature", "_UI_Release_type"), + EvolutionPackage.Literals.RELEASE__ALL_PACKAGES, false, false, false, null, null, null)); + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Collection<? extends EStructuralFeature> getChildrenFeaturesGen(Object object) + { + if (childrenFeatures == null) + { + super.getChildrenFeatures(object); + childrenFeatures.add(EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES); + } + return childrenFeatures; + } + + /** + * This specifies how to implement {@link #getChildren} and is used to deduce an appropriate feature for an + * {@link org.eclipse.emf.edit.command.AddCommand}, {@link org.eclipse.emf.edit.command.RemoveCommand} or + * {@link org.eclipse.emf.edit.command.MoveCommand} in {@link #createCommand}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Collection<? extends EStructuralFeature> getChildrenFeatures(Object object) + { + @SuppressWarnings("unchecked") + List<EStructuralFeature> childrenFeatures = (List<EStructuralFeature>)getChildrenFeaturesGen(object); + + childrenFeatures.remove(EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES); + childrenFeatures.add(0, EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES); + + return childrenFeatures; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EStructuralFeature getChildFeature(Object object, Object child) + { + // Check the type of the specified child object and return the proper feature to use for + // adding (see {@link AddCommand}) it as a child. + + return super.getChildFeature(object, child); + } + + @Override + protected boolean hasChildren(Object object, boolean optimized) + { + Release release = (Release)object; + return !release.getRootPackages().isEmpty(); + } + + /** + * This returns Release.gif. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getImage(Object object) + { + return overlayImage(object, getResourceLocator().getImage("full/obj16/Release")); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean shouldComposeCreationImage() + { + return true; + } + + /** + * This returns the label text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String getText(Object object) + { + return ((StyledString)getStyledText(object)).getString(); + } + + /** + * This returns the label styled text for the adapted class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public Object getStyledText(Object object) + { + StyledString styledLabel = new StyledString(); + styledLabel.append(getString("_UI_Release_type"), StyledString.Style.QUALIFIER_STYLER); + styledLabel.append(" v" + ((Release)object).getVersion()); + + Date date = ((Release)object).getDate(); + if (date != null) + { + styledLabel.append(" " + date.toString(), StyledString.Style.DECORATIONS_STYLER); + } + + return styledLabel; + } + + /** + * 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); + + switch (notification.getFeatureID(Release.class)) + { + case EvolutionPackage.RELEASE__VERSION: + case EvolutionPackage.RELEASE__DATE: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), false, true)); + return; + case EvolutionPackage.RELEASE__ROOT_PACKAGES: + fireNotifyChanged(new ViewerNotification(notification, notification.getNotifier(), true, false)); + return; + } + 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); + + newChildDescriptors.add(createChildParameter(EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES, EcoreFactory.eINSTANCE.createEPackage())); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.classpath b/plugins/org.eclipse.emf.cdo.evolution.editor/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.project b/plugins/org.eclipse.emf.cdo.evolution.editor/.project new file mode 100644 index 0000000000..297c6f6a85 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.project @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.evolution.editor</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.oomph.version.VersionBuilder</name> + <arguments> + <dictionary> + <key>check.maven.pom</key> + <value>true</value> + </dictionary> + <dictionary> + <key>ignore.lower.bound.dependency.ranges</key> + <value>true</value> + </dictionary> + <dictionary> + <key>release.path</key> + <value>/org.eclipse.emf.cdo.releng/versions/release.xml</value> + </dictionary> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> + <nature>org.eclipse.oomph.version.VersionNature</nature> + </natures> + <filteredResources> + <filter> + <id>1396938000000</id> + <name></name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-projectRelativePath-matches-true-false-target</arguments> + </matcher> + </filter> + </filteredResources> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..ff3d8e623b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,412 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.cleanOutputFolder=clean +org.eclipse.jdt.core.builder.duplicateResourceTask=warning +org.eclipse.jdt.core.builder.invalidClasspath=abort +org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore +org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java +org.eclipse.jdt.core.circularClasspath=error +org.eclipse.jdt.core.classpath.exclusionPatterns=enabled +org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled +org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled +org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW +org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=1 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=160 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.incompatibleJDKLevel=ignore +org.eclipse.jdt.core.incompleteClasspath=error diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000000..556ed07a3c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,3 @@ +#Fri Sep 02 05:38:34 CEST 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..222aec0421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,119 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=true +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=true +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=false +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=true +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=_EMFT +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_EMFT +formatter_settings_version=12 +org.eclipse.jdt.ui.exception.name=ex +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.overrideannotation=true +org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment"/><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author Eike Stepper\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment"/><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment"/><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates> +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=false +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.make_local_variable_final=false +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=true +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_parentheses_in_expressions=true +sp_cleanup.use_this_for_non_static_field_access=true +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=true +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..864e30fe5d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..b050639a54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.tasks.ui.prefs @@ -0,0 +1,4 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +project.repository.kind=bugzilla +project.repository.url=https\://bugs.eclipse.org/bugs diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..97c11e6725 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.mylyn.team.ui.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +commit.comment.template=[${task.id}] ${task.description}\r\n\r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000000..0c17d59e45 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,95 @@ +#Thu Feb 04 09:44:24 CET 2010 +ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error +ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error +CLASS_ELEMENT_TYPE_ADDED_METHOD=Error +CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error +CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error +CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error +CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error +ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error +ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error +ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +FIELD_ELEMENT_TYPE_ADDED_VALUE=Error +FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error +FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error +FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error +FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error +ILLEGAL_EXTEND=Warning +ILLEGAL_IMPLEMENT=Warning +ILLEGAL_INSTANTIATE=Warning +ILLEGAL_OVERRIDE=Warning +ILLEGAL_REFERENCE=Warning +INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error +INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error +INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error +INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +INVALID_JAVADOC_TAG=Ignore +INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error +MISSING_EE_DESCRIPTIONS=Warning +LEAK_EXTEND=Warning +LEAK_FIELD_DECL=Warning +LEAK_IMPLEMENT=Warning +LEAK_METHOD_PARAM=Warning +LEAK_METHOD_RETURN_TYPE=Warning +METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error +METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error +UNUSED_PROBLEM_FILTERS=Ignore +automatically_removed_unused_problem_filters=Disabled +eclipse.preferences.version=1 +incompatible_api_component_version=Error +incompatible_api_component_version_include_major_without_breaking_change=Disabled +incompatible_api_component_version_include_minor_without_api_change=Disabled +invalid_since_tag_version=Error +malformed_since_tag=Error +missing_since_tag=Error +report_api_breakage_when_major_version_incremented=Disabled +report_resolution_errors_api_component=Warning diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..fe01bb701d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/.settings/org.eclipse.pde.prefs @@ -0,0 +1,31 @@ +#Thu Feb 04 09:44:24 CET 2010 +compilers.f.unresolved-features=1 +compilers.f.unresolved-plugins=1 +compilers.incompatible-environment=1 +compilers.p.build=1 +compilers.p.build.bin.includes=1 +compilers.p.build.java.compliance=1 +compilers.p.build.missing.output=2 +compilers.p.build.output.library=1 +compilers.p.build.source.library=1 +compilers.p.build.src.includes=1 +compilers.p.deprecated=2 +compilers.p.discouraged-class=1 +compilers.p.internal=1 +compilers.p.missing-packages=1 +compilers.p.missing-version-export-package=1 +compilers.p.missing-version-import-package=1 +compilers.p.missing-version-require-bundle=1 +compilers.p.no-required-att=0 +compilers.p.not-externalized-att=2 +compilers.p.unknown-attribute=1 +compilers.p.unknown-class=1 +compilers.p.unknown-element=1 +compilers.p.unknown-identifier=1 +compilers.p.unknown-resource=1 +compilers.p.unresolved-ex-points=0 +compilers.p.unresolved-import=0 +compilers.s.create-docs=false +compilers.s.doc-folder=doc +compilers.s.open-tags=1 +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.evolution.editor/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..8d4420235f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/META-INF/MANIFEST.MF @@ -0,0 +1,24 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.evolution.editor;singleton:=true +Automatic-Module-Name: org.eclipse.emf.cdo.evolution.editor +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: org.eclipse.emf.cdo.evolution.presentation;version="1.0.0", + org.eclipse.emf.cdo.evolution.presentation.quickfix;version="1.0.0" +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.core.resources;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.cdo.evolution.edit;bundle-version="[1.0.0,2.0.0)";visibility:=reexport, + org.eclipse.emf.ecore.xmi;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.edit.ui;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.jface.text;bundle-version="[3.5.0,4.0.0)", + org.eclipse.ui.ide;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.ecore.edit;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.net4j.ui.shared;bundle-version="[4.0.0,5.0.0)", + org.eclipse.emf.ecore.editor;bundle-version="[2.5.0,3.0.0)" +Bundle-ActivationPolicy: lazy diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/build.properties b/plugins/org.eclipse.emf.cdo.evolution.editor/build.properties new file mode 100644 index 0000000000..5fb07711cf --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/build.properties @@ -0,0 +1,10 @@ +# + +bin.includes = .,\ + icons/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties +jars.compile.order = . +source.. = src/ +output.. = bin diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/obj16/EvolutionModelFile.gif b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/obj16/EvolutionModelFile.gif Binary files differnew file mode 100644 index 0000000000..09bd7b3a29 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/obj16/EvolutionModelFile.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/NewEvolution.gif b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/NewEvolution.gif Binary files differnew file mode 100644 index 0000000000..e3b9c14a6a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/NewEvolution.gif diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix.png b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix.png Binary files differnew file mode 100644 index 0000000000..87ef6f5b03 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix.png diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix@2x.png b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix@2x.png Binary files differnew file mode 100644 index 0000000000..1ce492806a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/icons/full/wizban/quick_fix@2x.png diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.properties b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.properties new file mode 100644 index 0000000000..bf422441ea --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.properties @@ -0,0 +1,58 @@ +# + +pluginName = CDO Model Repository Evolution Editor +providerName = Eclipse Modeling Project + +_UI_EvolutionEditor_menu = &Evolution Editor + +_UI_CreateChild_menu_item = &New Child +_UI_CreateSibling_menu_item = N&ew Sibling + +_UI_ShowPropertiesView_menu_item = Show &Properties View +_UI_RefreshViewer_menu_item = &Refresh + +_UI_SelectionPage_label = Selection + +_UI_NoObjectSelected = Selected Nothing +_UI_SingleObjectSelected = Selected Object: {0} +_UI_MultiObjectSelected = Selected {0} Objects + +_UI_OpenEditorError_label = Open Editor + +_UI_Wizard_category = Example EMF Model Creation Wizards + +_UI_CreateModelError_message = Problems encountered in file "{0}" + +_UI_EvolutionModelWizard_label = Evolution Model +_UI_EvolutionModelWizard_description = Create a new Evolution model + +_UI_EvolutionEditor_label = Evolution Model Editor + +_UI_EvolutionEditorFilenameDefaultBase = My +_UI_EvolutionEditorFilenameExtensions = evolution + +_UI_Wizard_label = New + +_WARN_FilenameExtension = The file name must end in ''.{0}'' +_WARN_FilenameExtensions = The file name must have one of the following extensions: {0} + +_UI_ModelObject = &Model Object +_UI_XMLEncoding = &XML Encoding +_UI_XMLEncodingChoices = UTF-8 ASCII UTF-16 UTF-16BE UTF-16LE ISO-8859-1 +_UI_Wizard_initial_object_description = Select a model object to create + +_UI_FileConflict_label = File Conflict +_WARN_FileConflict = There are unsaved changes that conflict with changes made outside the editor. Do you wish to discard this editor's changes? + +_UI_ValidatingPhase_message = Validating phase {0} + +_QF_SelectModelsFromWorkspace = Select one or more models from the workspace +_QF_SelectModelFromWorkspace = Select a model from the workspace +_QF_PackageMissing = Add the model ''{0}'' to the evolution +_QF_SetVersionIntoNamespace = Set the upcoming version v{0} into the namespace URI +_QF_DisableUniqueNamespaceEnforcement = Disable enforcement of unique namespace URIs in this evolution +_QF_AssignID = Assign a new ID +_QF_RememberID = Remember the old ID and assign a new ID +_QF_ReplaceID = Replace the existing ID with a new ID +_QF_SpecifyFeaturePath = Specify the feature path for the {0} feature ''{1}'' +_QF_CreateRelease = Create the v{0} release diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.xml b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.xml new file mode 100644 index 0000000000..a1def4025d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/plugin.xml @@ -0,0 +1,44 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.0"?> + +<!-- +--> + +<plugin> + + <extension point="org.eclipse.net4j.util.factories"> + <factory + productGroup="org.eclipse.emf.cdo.evolution.diagnosticResolutionGenerators" + type="default" + class="org.eclipse.emf.cdo.evolution.presentation.quickfix.DefaultDiagnosticResolutionGenerator$Factory"/> + </extension> + + <extension point="org.eclipse.ui.newWizards"> + <!-- @generated evolution --> + <category + id="org.eclipse.emf.ecore.Wizard.category.ID" + name="%_UI_Wizard_category"/> + <wizard + id="org.eclipse.emf.cdo.evolution.presentation.EvolutionModelWizardID" + name="%_UI_EvolutionModelWizard_label" + class="org.eclipse.emf.cdo.evolution.presentation.EvolutionModelWizard" + category="org.eclipse.emf.ecore.Wizard.category.ID" + icon="icons/full/obj16/EvolutionModelFile.gif"> + <description>%_UI_EvolutionModelWizard_description</description> + <selection class="org.eclipse.core.resources.IResource"/> + </wizard> + </extension> + + <extension point="org.eclipse.ui.editors"> + <!-- @generated evolution --> + <editor + id="org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorID" + name="%_UI_EvolutionEditor_label" + icon="icons/full/obj16/EvolutionModelFile.gif" + extensions="evolution" + class="org.eclipse.emf.cdo.evolution.presentation.EvolutionEditor" + contributorClass="org.eclipse.emf.cdo.evolution.presentation.EvolutionActionBarContributor"> + </editor> + </extension> + +</plugin> diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/pom.xml b/plugins/org.eclipse.emf.cdo.evolution.editor/pom.xml new file mode 100644 index 0000000000..3d18aec667 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/pom.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2017 Eike Stepper (Loehne, Germany) and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Eike Stepper - initial API and implementation +--> +<project + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.plugins</artifactId> + <version>4.7.0-SNAPSHOT</version> + <relativePath>../../releng/org.eclipse.emf.cdo.releng.parent/plugins</relativePath> + </parent> + + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.evolution.editor</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + +</project> diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionActionBarContributor.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionActionBarContributor.java new file mode 100644 index 0000000000..bb586373cb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionActionBarContributor.java @@ -0,0 +1,812 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; + +import org.eclipse.emf.common.ui.action.ViewerFilterAction; +import org.eclipse.emf.common.ui.viewer.IViewerProvider; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.emf.ecore.EGenericType; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.ETypeParameter; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.presentation.EcoreEditorPlugin; +import org.eclipse.emf.edit.command.ChangeCommand; +import org.eclipse.emf.edit.command.CommandParameter; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; +import org.eclipse.emf.edit.ui.action.CollapseAllAction; +import org.eclipse.emf.edit.ui.action.ControlAction; +import org.eclipse.emf.edit.ui.action.CreateChildAction; +import org.eclipse.emf.edit.ui.action.CreateSiblingAction; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.action.FindAction; +import org.eclipse.emf.edit.ui.action.LoadResourceAction; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator; + +import org.eclipse.jface.action.Action; +import org.eclipse.jface.action.ActionContributionItem; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.action.IContributionItem; +import org.eclipse.jface.action.IContributionManager; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.action.SubContributionItem; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.swt.widgets.Display; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.PartInitException; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashSet; +import java.util.LinkedHashSet; +import java.util.Set; + +/** + * This is the action bar contributor for the Evolution model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionActionBarContributor extends EditingDomainActionBarContributor implements ISelectionChangedListener +{ + /** + * This keeps track of the active editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IEditorPart activeEditorPart; + + /** + * This keeps track of the current selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionProvider selectionProvider; + + /** + * This action opens the Properties view. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction showPropertiesViewAction = new Action(EvolutionEditorPlugin.INSTANCE.getString("_UI_ShowPropertiesView_menu_item")) + { + @Override + public void run() + { + try + { + getPage().showView("org.eclipse.ui.views.PropertySheet"); + } + catch (PartInitException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + }; + + /** + * This action refreshes the viewer of the current editor if the editor + * implements {@link org.eclipse.emf.common.ui.viewer.IViewerProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IAction refreshViewerAction = new Action(EvolutionEditorPlugin.INSTANCE.getString("_UI_RefreshViewer_menu_item")) + { + @Override + public boolean isEnabled() + { + return activeEditorPart instanceof IViewerProvider; + } + + @Override + public void run() + { + if (activeEditorPart instanceof IViewerProvider) + { + Viewer viewer = ((IViewerProvider)activeEditorPart).getViewer(); + if (viewer != null) + { + viewer.refresh(); + } + } + } + }; + + protected IAction assignIDsAction = new IDAction("Assign IDs") + { + @Override + protected void handleID(EModelElement modelElement) + { + IDAnnotation.ensureValue(modelElement); + } + }; + + protected IAction removeIDsAction = new IDAction("Remove IDs") + { + @Override + protected void handleID(EModelElement modelElement) + { + IDAnnotation.removeFrom(modelElement); + } + }; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateChildAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createChildActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateChild actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createChildMenuManager; + + /** + * This will contain one {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} corresponding to each descriptor + * generated for the current selection by the item provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<IAction> createSiblingActions; + + /** + * This is the menu manager into which menu contribution items should be added for CreateSibling actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IMenuManager createSiblingMenuManager; + + protected SelectionChangedEvent lastSelectionChangedEvent; + + protected ViewerFilterAction showGenericsAction = new ViewerFilterAction(EcoreEditorPlugin.INSTANCE.getString("_UI_ShowGenerics_menu_item"), + IAction.AS_CHECK_BOX) + { + @Override + protected void refreshViewers() + { + if (activeEditorPart instanceof EvolutionEditor) + { + ((EvolutionEditor)activeEditorPart).ecoreItemProviderAdapterFactory.setShowGenerics(isChecked()); + } + + super.refreshViewers(); + + if (lastSelectionChangedEvent != null && activeEditorPart instanceof EvolutionEditor) + { + selectionChanged(lastSelectionChangedEvent); + } + } + + @Override + public boolean select(Viewer viewer, Object parentElement, Object element) + { + return isChecked() || !(element instanceof ETypeParameter || element instanceof EGenericType); + } + }; + + /** + * This creates an instance of the contributor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EvolutionActionBarContributor() + { + super(ADDITIONS_LAST_STYLE); + loadResourceAction = new LoadResourceAction(); + // validateAction = new ValidateAction(); + liveValidationAction = new DiagnosticDecorator.LiveValidator.LiveValidationAction(EvolutionEditorPlugin.getPlugin().getDialogSettings()); + controlAction = new ControlAction(); + findAction = FindAction.create(); + collapseAllAction = new CollapseAllAction(); + + showGenericsAction.setChecked(Boolean.parseBoolean(EcoreEditorPlugin.getPlugin().getDialogSettings().get("showGenericsAction"))); + } + + public void showGenerics(boolean isChecked) + { + if (showGenericsAction != null) + { + showGenericsAction.setChecked(isChecked); + } + } + + @Override + public void dispose() + { + EcoreEditorPlugin.getPlugin().getDialogSettings().put("showGenericsAction", Boolean.toString(showGenericsAction.isChecked())); + + super.dispose(); + } + + /** + * This adds Separators for editor additions to the tool bar. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void contributeToToolBar(IToolBarManager toolBarManager) + { + super.contributeToToolBar(toolBarManager); + toolBarManager.add(new Separator("evolution-settings")); + toolBarManager.add(new Separator("evolution-additions")); + toolBarManager.add(assignIDsAction); + toolBarManager.add(removeIDsAction); + } + + /** + * This adds to the menu bar a menu and some separators for editor additions, + * as well as the sub-menus for object creation items. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void contributeToMenu(IMenuManager menuManager) + { + super.contributeToMenu(menuManager); + + IMenuManager submenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditor_menu"), "org.eclipse.emf.cdo.evolutionMenuID"); + menuManager.insertAfter("additions", submenuManager); + submenuManager.add(new Separator("settings")); + submenuManager.add(new Separator("actions")); + submenuManager.add(new Separator("additions")); + submenuManager.add(new Separator("additions-end")); + + // Prepare for CreateChild item addition or removal. + // + createChildMenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + submenuManager.insertBefore("additions", createChildMenuManager); + + // Prepare for CreateSibling item addition or removal. + // + createSiblingMenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + submenuManager.insertBefore("additions", createSiblingMenuManager); + + // Force an update because Eclipse hides empty menus now. + // + submenuManager.addMenuListener(new IMenuListener() + { + public void menuAboutToShow(IMenuManager menuManager) + { + menuManager.updateAll(true); + } + }); + + addGlobalActions(submenuManager); + submenuManager.insertBefore("additions-end", showGenericsAction); + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setActiveEditorGen(IEditorPart part) + { + super.setActiveEditor(part); + activeEditorPart = part; + + // Switch to the new selection provider. + // + if (selectionProvider != null) + { + selectionProvider.removeSelectionChangedListener(this); + } + if (part == null) + { + selectionProvider = null; + } + else + { + selectionProvider = part.getSite().getSelectionProvider(); + selectionProvider.addSelectionChangedListener(this); + + // Fake a selection changed event to update the menus. + // + if (selectionProvider.getSelection() != null) + { + selectionChanged(new SelectionChangedEvent(selectionProvider, selectionProvider.getSelection())); + } + } + } + + /** + * When the active editor changes, this remembers the change and registers with it as a selection provider. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void setActiveEditor(IEditorPart part) + { + setActiveEditorGen(part); + + if (part instanceof EvolutionEditor) + { + showGenericsAction.addViewer(((EvolutionEditor)part).getViewer()); + showGenericsAction.setEnabled(true); + } + else + { + showGenericsAction.setEnabled(false); + } + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionChangedListener}, + * handling {@link org.eclipse.jface.viewers.SelectionChangedEvent}s by querying for the children and siblings + * that can be added to the selected object and updating the menus accordingly. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void selectionChanged(SelectionChangedEvent event) + { + // Remove any menu items for old selection. + // + if (createChildMenuManager != null) + { + depopulateManager(createChildMenuManager, createChildActions); + } + if (createSiblingMenuManager != null) + { + depopulateManager(createSiblingMenuManager, createSiblingActions); + } + + // Query the new selection for appropriate new child/sibling descriptors + // + Collection<?> newChildDescriptors = null; + Collection<?> newSiblingDescriptors = null; + + ISelection selection = event.getSelection(); + if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).size() == 1) + { + Object object = ((IStructuredSelection)selection).getFirstElement(); + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + + newChildDescriptors = domain.getNewChildDescriptors(object, null); + newSiblingDescriptors = domain.getNewChildDescriptors(null, object); + } + + // Generate actions for selection; populate and redraw the menus. + // + createChildActions = generateCreateChildActions(newChildDescriptors, selection); + createSiblingActions = generateCreateSiblingActions(newSiblingDescriptors, selection); + + if (createChildMenuManager != null) + { + populateManager(createChildMenuManager, createChildActions, null); + createChildMenuManager.update(true); + } + if (createSiblingMenuManager != null) + { + populateManager(createSiblingMenuManager, createSiblingActions, null); + createSiblingMenuManager.update(true); + } + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateChildAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected Collection<IAction> generateCreateChildActions(Collection<?> descriptors, ISelection selection) + { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) + { + for (Object descriptor : descriptors) + { + if (!showGenericsAction.isChecked() && descriptor instanceof CommandParameter) + { + Object feature = ((CommandParameter)descriptor).getFeature(); + if (isGenericFeature(feature)) + { + continue; + } + } + actions.add(new EcoreCreateChildAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + /** + * This generates a {@link org.eclipse.emf.edit.ui.action.CreateSiblingAction} for each object in <code>descriptors</code>, + * and returns the collection of these actions. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected Collection<IAction> generateCreateSiblingActions(Collection<?> descriptors, ISelection selection) + { + Collection<IAction> actions = new ArrayList<IAction>(); + if (descriptors != null) + { + for (Object descriptor : descriptors) + { + if (!showGenericsAction.isChecked() && descriptor instanceof CommandParameter) + { + Object feature = ((CommandParameter)descriptor).getFeature(); + if (isGenericFeature(feature)) + { + continue; + } + } + actions.add(new EcoreCreateSiblingAction(activeEditorPart, selection, descriptor)); + } + } + return actions; + } + + protected boolean isGenericFeature(Object feature) + { + return feature == EcorePackage.Literals.ECLASS__EGENERIC_SUPER_TYPES || feature == EcorePackage.Literals.ECLASSIFIER__ETYPE_PARAMETERS + || feature == EcorePackage.Literals.EOPERATION__EGENERIC_EXCEPTIONS || feature == EcorePackage.Literals.EOPERATION__ETYPE_PARAMETERS + || feature == EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE; + } + + /** + * This populates the specified <code>manager</code> with {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection, + * by inserting them before the specified contribution item <code>contributionID</code>. + * If <code>contributionID</code> is <code>null</code>, they are simply added. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected void populateManager(IContributionManager manager, Collection<? extends IAction> actions, String contributionID) + { + if (actions != null) + { + // Look for actions that create EAnnotations. + // + Set<IAction> ignoredActions = new HashSet<IAction>(); + Set<IAction> annotationActions = new LinkedHashSet<IAction>(); + for (IAction action : actions) + { + if (action instanceof EObjectProvider) + { + EObjectProvider eObjectProvider = (EObjectProvider)action; + EObject eObject = eObjectProvider.getEObject(); + if (eObject instanceof EAnnotation) + { + annotationActions.add(action); + ignoredActions.add(action); + } + } + } + + // If there is more than one action that creates an annotation... + // + if (annotationActions.size() > 1) + { + // Create a menu manager to group them. + // This assumes the first action is one for the null source. + // + IAction action = annotationActions.iterator().next(); + String actionText = action.getText(); + MenuManager annotationMenuManager = new MenuManager(actionText, action.getImageDescriptor(), "annotations"); + + // Add that menu manager instead of the individual actions. + if (contributionID != null) + { + manager.insertBefore(contributionID, annotationMenuManager); + } + else + { + manager.add(annotationMenuManager); + } + + // Add an item for each annotation action. + // + for (IAction annotationAction : annotationActions) + { + annotationMenuManager.add(annotationAction); + String source = ((EAnnotation)((EObjectProvider)annotationAction).getEObject()).getSource(); + if (source != null) + { + // Set the label to include the source. + // + annotationAction.setText(actionText + " - " + source); + } + } + } + else + { + ignoredActions.clear(); + } + + for (IAction action : actions) + { + if (!ignoredActions.contains(action)) + { + if (contributionID != null) + { + manager.insertBefore(contributionID, action); + } + else + { + manager.add(action); + } + } + } + } + } + + /** + * This removes from the specified <code>manager</code> all {@link org.eclipse.jface.action.ActionContributionItem}s + * based on the {@link org.eclipse.jface.action.IAction}s contained in the <code>actions</code> collection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void depopulateManager(IContributionManager manager, Collection<? extends IAction> actions) + { + if (actions != null) + { + IContributionItem[] items = manager.getItems(); + for (int i = 0; i < items.length; i++) + { + // Look into SubContributionItems + // + IContributionItem contributionItem = items[i]; + while (contributionItem instanceof SubContributionItem) + { + contributionItem = ((SubContributionItem)contributionItem).getInnerItem(); + } + + // Delete the ActionContributionItems with matching action. + // + if (contributionItem instanceof ActionContributionItem) + { + IAction action = ((ActionContributionItem)contributionItem).getAction(); + if (actions.contains(action)) + { + manager.remove(contributionItem); + } + } + } + } + } + + /** + * This populates the pop-up menu before it appears. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void menuAboutToShow(IMenuManager menuManager) + { + super.menuAboutToShow(menuManager); + MenuManager submenuManager = null; + + submenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateChild_menu_item")); + populateManager(submenuManager, createChildActions, null); + menuManager.insertBefore("edit", submenuManager); + + submenuManager = new MenuManager(EvolutionEditorPlugin.INSTANCE.getString("_UI_CreateSibling_menu_item")); + populateManager(submenuManager, createSiblingActions, null); + menuManager.insertBefore("edit", submenuManager); + } + + /** + * This inserts global actions before the "additions-end" separator. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void addGlobalActions(IMenuManager menuManager) + { + menuManager.insertAfter("additions-end", new Separator("ui-actions")); + menuManager.insertAfter("ui-actions", showPropertiesViewAction); + + refreshViewerAction.setEnabled(refreshViewerAction.isEnabled()); + menuManager.insertAfter("ui-actions", refreshViewerAction); + + super.addGlobalActions(menuManager); + } + + /** + * This ensures that a delete action will clean up all references to deleted objects. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean removeAllReferencesOnDelete() + { + return true; + } + + /** + * An interface implemented by {@link EcoreCreateChildAction} and {@link EcoreCreateSiblingAction} to provide access to the data in the descriptor. + */ + public interface EObjectProvider + { + public EObject getEObject(); + } + + /** + * A create child action subclass that provides access to the {@link #descriptor} and specializes {@link #run()} to show the properties view. + */ + public class EcoreCreateChildAction extends CreateChildAction implements EObjectProvider + { + public EcoreCreateChildAction(IWorkbenchPart workbenchPart, ISelection selection, Object descriptor) + { + super(workbenchPart, selection, descriptor); + } + + public EObject getEObject() + { + if (descriptor instanceof CommandParameter) + { + CommandParameter commandParameter = (CommandParameter)descriptor; + return commandParameter.getEValue(); + } + else + { + return null; + } + } + + @Override + public void run() + { + super.run(); + + // This is dispatched twice because the command stack listener dispatches once and then the viewer selection is + // also dispatches once, + // and we need to delay until the selection is established. + // + final Display display = getPage().getWorkbenchWindow().getShell().getDisplay(); + display.asyncExec(new Runnable() + { + public void run() + { + display.asyncExec(new Runnable() + { + public void run() + { + showPropertiesViewAction.run(); + } + }); + } + }); + } + } + + /** + * A create sibling action subclass that provides access to the {@link #descriptor} and specializes {@link #run()} to show the properties view. + */ + public class EcoreCreateSiblingAction extends CreateSiblingAction implements EObjectProvider + { + public EcoreCreateSiblingAction(IWorkbenchPart workbenchPart, ISelection selection, Object descriptor) + { + super(workbenchPart, selection, descriptor); + } + + public EObject getEObject() + { + if (descriptor instanceof CommandParameter) + { + CommandParameter commandParameter = (CommandParameter)descriptor; + return commandParameter.getEValue(); + } + else + { + return null; + } + } + + @Override + public void run() + { + super.run(); + + // This is dispatched twice because the command stack listener dispatches once and then the viewer selection is + // also dispatches once, + // and we need to delay until the selection is established. + // + final Display display = getPage().getWorkbenchWindow().getShell().getDisplay(); + display.asyncExec(new Runnable() + { + public void run() + { + display.asyncExec(new Runnable() + { + public void run() + { + showPropertiesViewAction.run(); + } + }); + } + }); + } + } + + /** + * @author Eike Stepper + */ + private abstract class IDAction extends Action + { + public IDAction(String text) + { + super(text); + } + + @Override + public void run() + { + if (selectionProvider != null) + { + ISelection selection = selectionProvider.getSelection(); + if (selection instanceof IStructuredSelection) + { + IStructuredSelection ssel = (IStructuredSelection)selection; + final Object element = ssel.getFirstElement(); + if (element instanceof EModelElement) + { + final EModelElement rootElement = (EModelElement)element; + + EditingDomain domain = ((IEditingDomainProvider)activeEditorPart).getEditingDomain(); + ChangeCommand command = new ChangeCommand(rootElement) + { + @Override + protected void doExecute() + { + ElementHandler.execute(rootElement, new ElementRunnable() + { + public void run(EModelElement modelElement) + { + handleID(modelElement); + } + }); + } + }; + + domain.getCommandStack().execute(command); + } + } + } + } + + protected abstract void handleID(EModelElement modelElement); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditor.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditor.java new file mode 100644 index 0000000000..bff82ec24b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditor.java @@ -0,0 +1,3024 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.impl.EvolutionImpl; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.DiagnosticResolution; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.QuickFixWizard; +import org.eclipse.emf.cdo.evolution.provider.EvolutionItemProviderAdapterFactory; +import org.eclipse.emf.cdo.evolution.util.DiagnosticID; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ValidationContext; +import org.eclipse.emf.cdo.evolution.util.ValidationPhase; + +import org.eclipse.net4j.ui.shared.SharedIcons; +import org.eclipse.net4j.util.ReflectUtil; +import org.eclipse.net4j.util.StringUtil; +import org.eclipse.net4j.util.WrappedException; + +import org.eclipse.emf.common.command.AbstractCommand; +import org.eclipse.emf.common.command.BasicCommandStack; +import org.eclipse.emf.common.command.Command; +import org.eclipse.emf.common.command.CommandStack; +import org.eclipse.emf.common.command.CommandStackListener; +import org.eclipse.emf.common.command.UnexecutableCommand; +import org.eclipse.emf.common.notify.AdapterFactory; +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.ui.ImageURIRegistry; +import org.eclipse.emf.common.ui.MarkerHelper; +import org.eclipse.emf.common.ui.editor.ProblemEditorPart; +import org.eclipse.emf.common.ui.viewer.ColumnViewerInformationControlToolTipSupport; +import org.eclipse.emf.common.ui.viewer.IViewerProvider; +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.DiagnosticChain; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EGenericType; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.ETypeParameter; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.provider.EcoreItemProviderAdapterFactory; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.Diagnostician; +import org.eclipse.emf.ecore.util.EContentAdapter; +import org.eclipse.emf.ecore.util.EObjectValidator; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.edit.command.CommandParameter; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.domain.EditingDomain; +import org.eclipse.emf.edit.domain.IEditingDomainProvider; +import org.eclipse.emf.edit.provider.AdapterFactoryItemDelegator; +import org.eclipse.emf.edit.provider.ComposedAdapterFactory; +import org.eclipse.emf.edit.provider.IItemLabelProvider; +import org.eclipse.emf.edit.provider.IItemPropertyDescriptor; +import org.eclipse.emf.edit.provider.IItemPropertySource; +import org.eclipse.emf.edit.provider.ReflectiveItemProviderAdapterFactory; +import org.eclipse.emf.edit.provider.resource.ResourceItemProviderAdapterFactory; +import org.eclipse.emf.edit.ui.EMFEditUIPlugin; +import org.eclipse.emf.edit.ui.action.EditingDomainActionBarContributor; +import org.eclipse.emf.edit.ui.celleditor.AdapterFactoryTreeEditor; +import org.eclipse.emf.edit.ui.dnd.EditingDomainViewerDropAdapter; +import org.eclipse.emf.edit.ui.dnd.LocalTransfer; +import org.eclipse.emf.edit.ui.dnd.ViewerDragAdapter; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryContentProvider; +import org.eclipse.emf.edit.ui.provider.AdapterFactoryLabelProvider; +import org.eclipse.emf.edit.ui.provider.DecoratingColumLabelProvider; +import org.eclipse.emf.edit.ui.provider.DelegatingStyledCellLabelProvider; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator.DiagnosticAdapter; +import org.eclipse.emf.edit.ui.provider.DiagnosticDecorator.LiveValidator; +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; +import org.eclipse.emf.edit.ui.provider.PropertySource; +import org.eclipse.emf.edit.ui.provider.UnwrappingSelectionProvider; +import org.eclipse.emf.edit.ui.util.EditUIMarkerHelper; +import org.eclipse.emf.edit.ui.util.EditUIUtil; +import org.eclipse.emf.edit.ui.util.FindAndReplaceTarget; +import org.eclipse.emf.edit.ui.view.ExtendedPropertySheetPage; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IResourceChangeEvent; +import org.eclipse.core.resources.IResourceChangeListener; +import org.eclipse.core.resources.IResourceDelta; +import org.eclipse.core.resources.IResourceDeltaVisitor; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.Adapters; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.jface.action.IMenuListener; +import org.eclipse.jface.action.IMenuManager; +import org.eclipse.jface.action.IStatusLineManager; +import org.eclipse.jface.action.IToolBarManager; +import org.eclipse.jface.action.MenuManager; +import org.eclipse.jface.action.Separator; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.dialogs.ProgressMonitorDialog; +import org.eclipse.jface.operation.IRunnableContext; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.text.IFindReplaceTarget; +import org.eclipse.jface.util.LocalSelectionTransfer; +import org.eclipse.jface.viewers.ColumnLabelProvider; +import org.eclipse.jface.viewers.IOpenListener; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.OpenEvent; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.TableViewerColumn; +import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.osgi.util.NLS; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CTabFolder; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.DropTargetEvent; +import org.eclipse.swt.dnd.FileTransfer; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.events.ControlAdapter; +import org.eclipse.swt.events.ControlEvent; +import org.eclipse.swt.events.KeyAdapter; +import org.eclipse.swt.events.KeyEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Menu; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.swt.widgets.Table; +import org.eclipse.swt.widgets.TableColumn; +import org.eclipse.swt.widgets.Tree; +import org.eclipse.ui.IActionBars; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.IPartListener; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchPartSite; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.SaveAsDialog; +import org.eclipse.ui.ide.IGotoMarker; +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.MultiPageEditorPart; +import org.eclipse.ui.progress.IWorkbenchSiteProgressService; +import org.eclipse.ui.views.contentoutline.ContentOutline; +import org.eclipse.ui.views.contentoutline.ContentOutlinePage; +import org.eclipse.ui.views.contentoutline.IContentOutlinePage; +import org.eclipse.ui.views.properties.IPropertyDescriptor; +import org.eclipse.ui.views.properties.IPropertySheetEntry; +import org.eclipse.ui.views.properties.IPropertySheetPage; +import org.eclipse.ui.views.properties.IPropertySource; +import org.eclipse.ui.views.properties.PropertySheet; +import org.eclipse.ui.views.properties.PropertySheetPage; +import org.eclipse.ui.views.properties.PropertySheetSorter; + +import java.io.IOException; +import java.io.InputStream; +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.EventObject; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.LinkedHashMap; +import java.util.LinkedHashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * This is an example of a Evolution model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionEditor extends MultiPageEditorPart implements IEditingDomainProvider, ISelectionProvider, IMenuListener, IViewerProvider, IGotoMarker +{ + /** + * This keeps track of the editing domain that is used to track all changes to the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected AdapterFactoryEditingDomain editingDomain; + + /** + * This is the one adapter factory used for providing views of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ComposedAdapterFactory adapterFactory; + + /** + * This is the content outline page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IContentOutlinePage contentOutlinePage; + + /** + * This is a kludge... + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStatusLineManager contentOutlineStatusLineManager; + + /** + * This is the content outline page's viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer contentOutlineViewer; + + /** + * This is the property sheet page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<PropertySheetPage> propertySheetPages = new ArrayList<PropertySheetPage>(); + + /** + * This is the viewer that shadows the selection in the content outline. + * The parent relation must be correctly defined for this to work. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected TreeViewer selectionViewer; + + /** + * This keeps track of the active content viewer, which may be either one of the viewers in the pages or the content outline viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Viewer currentViewer; + + /** + * This listens to which ever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelectionChangedListener selectionChangedListener; + + /** + * This keeps track of all the {@link org.eclipse.jface.viewers.ISelectionChangedListener}s that are listening to this editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<ISelectionChangedListener> selectionChangedListeners = new ArrayList<ISelectionChangedListener>(); + + /** + * This keeps track of the selection of the editor as a whole. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ISelection editorSelection = StructuredSelection.EMPTY; + + /** + * The MarkerHelper is responsible for creating workspace resource markers presented + * in Eclipse's Problems View. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MarkerHelper markerHelper = new EditUIMarkerHelper(); + + /** + * This listens for when the outline becomes active + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IPartListener partListener = new IPartListener() + { + public void partActivated(IWorkbenchPart p) + { + if (p instanceof ContentOutline) + { + if (((ContentOutline)p).getCurrentPage() == contentOutlinePage) + { + getActionBarContributor().setActiveEditor(EvolutionEditor.this); + + setCurrentViewer(contentOutlineViewer); + } + } + else if (p instanceof PropertySheet) + { + if (propertySheetPages.contains(((PropertySheet)p).getCurrentPage())) + { + getActionBarContributor().setActiveEditor(EvolutionEditor.this); + handleActivate(); + } + } + else if (p == EvolutionEditor.this) + { + handleActivate(); + } + } + + public void partBroughtToTop(IWorkbenchPart p) + { + // Ignore. + } + + public void partClosed(IWorkbenchPart p) + { + // Ignore. + } + + public void partDeactivated(IWorkbenchPart p) + { + // Ignore. + } + + public void partOpened(IWorkbenchPart p) + { + // Ignore. + } + }; + + /** + * Resources that have been removed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + /** + * Resources that have been changed since last activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + /** + * Resources that have been saved. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<Resource> savedResources = new ArrayList<Resource>(); + + /** + * Map to store the diagnostic associated with a resource. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Map<Resource, Diagnostic> resourceToDiagnosticMap = new LinkedHashMap<Resource, Diagnostic>(); + + /** + * Controls whether the problem indication should be updated. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean updateProblemIndication = true; + + /** + * Adapter used to update the problem indication when resources are demanded loaded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EContentAdapter problemIndicationAdapter = new EContentAdapter() + { + protected boolean dispatching; + + @Override + public void notifyChanged(Notification notification) + { + if (notification.getNotifier() instanceof Resource) + { + switch (notification.getFeatureID(Resource.class)) + { + case Resource.RESOURCE__IS_LOADED: + case Resource.RESOURCE__ERRORS: + case Resource.RESOURCE__WARNINGS: + { + Resource resource = (Resource)notification.getNotifier(); + Diagnostic diagnostic = analyzeResourceProblems(resource, null); + if (diagnostic.getSeverity() != Diagnostic.OK) + { + resourceToDiagnosticMap.put(resource, diagnostic); + } + else + { + resourceToDiagnosticMap.remove(resource); + } + dispatchUpdateProblemIndication(); + break; + } + } + } + else + { + super.notifyChanged(notification); + } + } + + protected void dispatchUpdateProblemIndication() + { + if (updateProblemIndication && !dispatching) + { + dispatching = true; + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + dispatching = false; + updateProblemIndication(); + } + }); + } + } + + @Override + protected void setTarget(Resource target) + { + basicSetTarget(target); + } + + @Override + protected void unsetTarget(Resource target) + { + basicUnsetTarget(target); + resourceToDiagnosticMap.remove(target); + dispatchUpdateProblemIndication(); + } + }; + + /** + * This listens for workspace changes. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IResourceChangeListener resourceChangeListener = new IResourceChangeListener() + { + public void resourceChanged(IResourceChangeEvent event) + { + IResourceDelta delta = event.getDelta(); + try + { + class ResourceDeltaVisitor implements IResourceDeltaVisitor + { + protected ResourceSet resourceSet = editingDomain.getResourceSet(); + + protected Collection<Resource> changedResources = new ArrayList<Resource>(); + + protected Collection<Resource> removedResources = new ArrayList<Resource>(); + + public boolean visit(final IResourceDelta delta) + { + if (delta.getResource().getType() == IResource.FILE) + { + if (delta.getKind() == IResourceDelta.REMOVED || delta.getKind() == IResourceDelta.CHANGED) + { + final Resource resource = resourceSet.getResource(URI.createPlatformResourceURI(delta.getFullPath().toString(), true), false); + if (resource != null) + { + if (delta.getKind() == IResourceDelta.REMOVED) + { + removedResources.add(resource); + } + else + { + if ((delta.getFlags() & IResourceDelta.MARKERS) != 0) + { + DiagnosticDecorator.Styled.DiagnosticAdapter.update(resource, + markerHelper.getMarkerDiagnostics(resource, (IFile)delta.getResource(), false)); + } + if ((delta.getFlags() & IResourceDelta.CONTENT) != 0) + { + if (!savedResources.remove(resource)) + { + changedResources.add(resource); + } + } + } + } + } + return false; + } + + return true; + } + + public Collection<Resource> getChangedResources() + { + return changedResources; + } + + public Collection<Resource> getRemovedResources() + { + return removedResources; + } + } + + final ResourceDeltaVisitor visitor = new ResourceDeltaVisitor(); + delta.accept(visitor); + + if (!visitor.getRemovedResources().isEmpty()) + { + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + removedResources.addAll(visitor.getRemovedResources()); + if (!isDirty()) + { + getSite().getPage().closeEditor(EvolutionEditor.this, false); + } + } + }); + } + + if (!visitor.getChangedResources().isEmpty()) + { + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + changedResources.addAll(visitor.getChangedResources()); + if (getSite().getPage().getActiveEditor() == EvolutionEditor.this) + { + handleActivate(); + } + } + }); + } + } + catch (CoreException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + }; + + protected EcoreItemProviderAdapterFactory ecoreItemProviderAdapterFactory; + + private TableViewer problemViewer; + + private final Set<Object> readOnlyObjects = new HashSet<Object>(); + + private Evolution evolution; + + private Diagnostic[] allDiagnostics; + + /** + * Handles activation of the editor or it's associated views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleActivate() + { + // Recompute the read only state. + // + if (editingDomain.getResourceToReadOnlyMap() != null) + { + editingDomain.getResourceToReadOnlyMap().clear(); + + // Refresh any actions that may become enabled or disabled. + // + setSelection(getSelection()); + } + + if (!removedResources.isEmpty()) + { + if (handleDirtyConflict()) + { + getSite().getPage().closeEditor(EvolutionEditor.this, false); + } + else + { + removedResources.clear(); + changedResources.clear(); + savedResources.clear(); + } + } + else if (!changedResources.isEmpty()) + { + changedResources.removeAll(savedResources); + handleChangedResources(); + changedResources.clear(); + savedResources.clear(); + } + } + + /** + * Handles what to do with changed resources on activation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void handleChangedResources() + { + if (!changedResources.isEmpty() && (!isDirty() || handleDirtyConflict())) + { + ResourceSet resourceSet = editingDomain.getResourceSet(); + if (isDirty()) + { + changedResources.addAll(resourceSet.getResources()); + } + editingDomain.getCommandStack().flush(); + + updateProblemIndication = false; + for (Resource resource : changedResources) + { + if (resource.isLoaded()) + { + resource.unload(); + try + { + resource.load(resourceSet.getLoadOptions()); + } + catch (IOException exception) + { + if (!resourceToDiagnosticMap.containsKey(resource)) + { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + } + } + } + + if (AdapterFactoryEditingDomain.isStale(editorSelection)) + { + setSelection(StructuredSelection.EMPTY); + } + + updateProblemIndication = true; + updateProblemIndication(); + } + } + + /** + * Updates the problems indication with the information described in the specified diagnostic. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void updateProblemIndication() + { + if (updateProblemIndication) + { + BasicDiagnostic diagnostic = new BasicDiagnostic(Diagnostic.OK, "org.eclipse.emf.cdo.evolution.editor", 0, null, + new Object[] { editingDomain.getResourceSet() }); + for (Diagnostic childDiagnostic : resourceToDiagnosticMap.values()) + { + if (childDiagnostic.getSeverity() != Diagnostic.OK) + { + diagnostic.add(childDiagnostic); + } + } + + int lastEditorPage = getPageCount() - 1; + if (lastEditorPage >= 0 && getEditor(lastEditorPage) instanceof ProblemEditorPart) + { + ((ProblemEditorPart)getEditor(lastEditorPage)).setDiagnostic(diagnostic); + if (diagnostic.getSeverity() != Diagnostic.OK) + { + setActivePage(lastEditorPage); + } + } + else if (diagnostic.getSeverity() != Diagnostic.OK) + { + ProblemEditorPart problemEditorPart = new ProblemEditorPart(); + problemEditorPart.setDiagnostic(diagnostic); + problemEditorPart.setMarkerHelper(markerHelper); + try + { + addPage(++lastEditorPage, problemEditorPart, getEditorInput()); + setPageText(lastEditorPage, problemEditorPart.getPartName()); + setActivePage(lastEditorPage); + showTabs(); + } + catch (PartInitException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + + if (markerHelper.hasMarkers(editingDomain.getResourceSet())) + { + try + { + markerHelper.updateMarkers(diagnostic); + } + catch (CoreException exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + } + } + } + + /** + * Shows a dialog that asks if conflicting changes should be discarded. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean handleDirtyConflict() + { + return MessageDialog.openQuestion(getSite().getShell(), getString("_UI_FileConflict_label"), getString("_WARN_FileConflict")); + } + + /** + * This creates a model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionEditor() + { + super(); + initializeEditingDomain(); + } + + /** + * This sets up the editing domain for the model editor. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected void initializeEditingDomain() + { + // Create an adapter factory that yields item providers. + // + adapterFactory = new ComposedAdapterFactory(ComposedAdapterFactory.Descriptor.Registry.INSTANCE); + + adapterFactory.addAdapterFactory(new ResourceItemProviderAdapterFactory()); + adapterFactory.addAdapterFactory(new EvolutionItemProviderAdapterFactory()); + ecoreItemProviderAdapterFactory = new EcoreItemProviderAdapterFactory(); + adapterFactory.addAdapterFactory(ecoreItemProviderAdapterFactory); + adapterFactory.addAdapterFactory(new ReflectiveItemProviderAdapterFactory()); + + // Create the command stack that will notify this editor as commands are executed. + // + BasicCommandStack commandStack = new BasicCommandStack() + { + @Override + public void execute(Command command) + { + // Cancel live validation before executing a command that will trigger a new round of validation. + // + if (!(command instanceof AbstractCommand.NonDirtying)) + { + DiagnosticDecorator.Styled.cancel(editingDomain); + } + super.execute(command); + } + }; + + // Add a listener to set the most recent command's affected objects to be the selection of the viewer with focus. + // + commandStack.addCommandStackListener(new CommandStackListener() + { + public void commandStackChanged(final EventObject event) + { + ((EvolutionImpl)evolution).invalidateChange(); + + getContainer().getDisplay().asyncExec(new Runnable() + { + public void run() + { + firePropertyChange(IEditorPart.PROP_DIRTY); + + // Try to select the affected objects. + // + Command mostRecentCommand = ((CommandStack)event.getSource()).getMostRecentCommand(); + if (mostRecentCommand != null) + { + setSelectionToViewer(mostRecentCommand.getAffectedObjects()); + } + for (Iterator<PropertySheetPage> i = propertySheetPages.iterator(); i.hasNext();) + { + PropertySheetPage propertySheetPage = i.next(); + if (propertySheetPage.getControl().isDisposed()) + { + i.remove(); + } + else + { + propertySheetPage.refresh(); + } + } + } + }); + } + }); + + // Create the editing domain with a special command stack. + // + editingDomain = new AdapterFactoryEditingDomain(adapterFactory, commandStack, new HashMap<Resource, Boolean>()) + { + @Override + public Command createCommand(Class<? extends Command> commandClass, CommandParameter commandParameter) + { + Collection<?> collection = commandParameter.getCollection(); + if (collection != null && !collection.isEmpty()) + { + Object value = collection.iterator().next(); + if (isReadOnlyObject(value)) + { + return UnexecutableCommand.INSTANCE; + } + } + + return super.createCommand(commandClass, commandParameter); + } + }; + } + + protected boolean isReadOnlyObject(Object object) + { + if (object instanceof Release) + { + return true; + } + + if (object instanceof Change) + { + return true; + } + + if (readOnlyObjects.contains(object)) + { + return true; + } + + if (object instanceof EModelElement) + { + EModelElement modelElement = (EModelElement)object; + + if (evolution.containsElement(modelElement)) + { + return false; + } + + for (Release release : evolution.getReleases()) + { + if (release.containsElement(modelElement)) + { + readOnlyObjects.add(modelElement); + return true; + } + } + } + + return false; + } + + /** + * This is here for the listener to be able to call it. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void firePropertyChange(int action) + { + super.firePropertyChange(action); + } + + /** + * This sets the selection into whichever viewer is active. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelectionToViewer(Collection<?> collection) + { + final Collection<?> theSelection = collection; + // Make sure it's okay. + // + if (theSelection != null && !theSelection.isEmpty()) + { + Runnable runnable = new Runnable() + { + public void run() + { + // Try to select the items in the current content viewer of the editor. + // + if (currentViewer != null) + { + currentViewer.setSelection(new StructuredSelection(theSelection.toArray()), true); + } + } + }; + getSite().getShell().getDisplay().asyncExec(runnable); + } + } + + /** + * This returns the editing domain as required by the {@link IEditingDomainProvider} interface. + * This is important for implementing the static methods of {@link AdapterFactoryEditingDomain} + * and for supporting {@link org.eclipse.emf.edit.ui.action.CommandAction}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomain getEditingDomain() + { + return editingDomain; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class ReverseAdapterFactoryContentProvider extends AdapterFactoryContentProvider + { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ReverseAdapterFactoryContentProvider(AdapterFactory adapterFactory) + { + super(adapterFactory); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getElements(Object object) + { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object[] getChildren(Object object) + { + Object parent = super.getParent(object); + return (parent == null ? Collections.EMPTY_SET : Collections.singleton(parent)).toArray(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean hasChildren(Object object) + { + Object parent = super.getParent(object); + return parent != null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object getParent(Object object) + { + return null; + } + } + + /** + * This makes sure that one content viewer, either for the current page or the outline view, if it has focus, + * is the current one. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setCurrentViewer(Viewer viewer) + { + // If it is changing... + // + if (currentViewer != viewer) + { + if (selectionChangedListener == null) + { + // Create the listener on demand. + // + selectionChangedListener = new ISelectionChangedListener() + { + // This just notifies those things that are affected by the section. + // + public void selectionChanged(SelectionChangedEvent selectionChangedEvent) + { + setSelection(selectionChangedEvent.getSelection()); + } + }; + } + + // Stop listening to the old one. + // + if (currentViewer != null) + { + currentViewer.removeSelectionChangedListener(selectionChangedListener); + } + + // Start listening to the new one. + // + if (viewer != null) + { + viewer.addSelectionChangedListener(selectionChangedListener); + } + + // Remember it. + // + currentViewer = viewer; + + // Set the editors selection based on the current viewer's selection. + // + setSelection(currentViewer == null ? StructuredSelection.EMPTY : currentViewer.getSelection()); + } + } + + /** + * This returns the viewer as required by the {@link IViewerProvider} interface. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Viewer getViewer() + { + return currentViewer; + } + + /** + * This creates a context menu for the viewer and adds a listener as well registering the menu for extension. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected void createContextMenuFor(StructuredViewer viewer) + { + MenuManager contextMenu = new MenuManager("#PopUp"); + contextMenu.add(new Separator("additions")); + contextMenu.setRemoveAllWhenShown(true); + contextMenu.addMenuListener(this); + Menu menu = contextMenu.createContextMenu(viewer.getControl()); + viewer.getControl().setMenu(menu); + getSite().registerContextMenu(contextMenu, new UnwrappingSelectionProvider(viewer)); + + int dndOperations = DND.DROP_COPY | DND.DROP_MOVE | DND.DROP_LINK; + Transfer[] transfers = new Transfer[] { LocalTransfer.getInstance(), LocalSelectionTransfer.getTransfer(), FileTransfer.getInstance() }; + viewer.addDragSupport(dndOperations, transfers, new ViewerDragAdapter(viewer)); + viewer.addDropSupport(dndOperations, transfers, new EditingDomainViewerDropAdapter(editingDomain, viewer) + { + @Override + public void dropAccept(DropTargetEvent event) + { + super.dropAccept(event); + } + + @Override + public void drop(DropTargetEvent event) + { + super.drop(event); + } + }); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createModelGen() + { + URI resourceURI = EditUIUtil.getURI(getEditorInput(), editingDomain.getResourceSet().getURIConverter()); + Exception exception = null; + Resource resource = null; + try + { + // Load the resource through the editing domain. + // + resource = editingDomain.getResourceSet().getResource(resourceURI, true); + } + catch (Exception e) + { + exception = e; + resource = editingDomain.getResourceSet().getResource(resourceURI, false); + } + + Diagnostic diagnostic = analyzeResourceProblems(resource, exception); + if (diagnostic.getSeverity() != Diagnostic.OK) + { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + editingDomain.getResourceSet().eAdapters().add(problemIndicationAdapter); + } + + /** + * This is the method called to load a resource into the editing domain's resource set based on the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public void createModel() + { + createModelGen(); + + ResourceSet resourceSet = editingDomain.getResourceSet(); + evolution = EvolutionImpl.get(resourceSet); + if (evolution != null) + { + if (hasGenerics(evolution)) + { + ((EvolutionActionBarContributor)getActionBarContributor()).showGenerics(true); + } + } + } + + private boolean hasGenerics(Evolution evolution) + { + if (hasGenerics(evolution.getRootPackages())) + { + return true; + } + + for (Release release : evolution.getReleases()) + { + if (hasGenerics(release.getRootPackages())) + { + return true; + } + } + + return false; + } + + private boolean hasGenerics(EList<EPackage> rootPackages) + { + for (EPackage rootPackage : rootPackages) + { + for (Iterator<EObject> i = rootPackage.eAllContents(); i.hasNext();) + { + EObject eObject = i.next(); + if (eObject instanceof ETypeParameter || eObject instanceof EGenericType && !((EGenericType)eObject).getETypeArguments().isEmpty()) + { + return true; + } + } + } + + return false; + } + + /** + * Returns a diagnostic describing the errors and warnings listed in the resource + * and the specified exception (if any). + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Diagnostic analyzeResourceProblems(Resource resource, Exception exception) + { + boolean hasErrors = !resource.getErrors().isEmpty(); + if (hasErrors || !resource.getWarnings().isEmpty()) + { + BasicDiagnostic basicDiagnostic = new BasicDiagnostic(hasErrors ? Diagnostic.ERROR : Diagnostic.WARNING, "org.eclipse.emf.cdo.evolution.editor", 0, + getString("_UI_CreateModelError_message", resource.getURI()), new Object[] { exception == null ? (Object)resource : exception }); + basicDiagnostic.merge(EcoreUtil.computeDiagnostic(resource, true)); + return basicDiagnostic; + } + else if (exception != null) + { + return new BasicDiagnostic(Diagnostic.ERROR, "org.eclipse.emf.cdo.evolution.editor", 0, getString("_UI_CreateModelError_message", resource.getURI()), + new Object[] { exception }); + } + else + { + return Diagnostic.OK_INSTANCE; + } + } + + /** + * @author Eike Stepper + */ + private static class PhasedLiveValidator extends LiveValidator + { + public PhasedLiveValidator(EditingDomain editingDomain, IDialogSettings dialogSettings) + { + super(editingDomain, dialogSettings); + } + + @Override + public void scheduleValidation() + { + if (validationJob == null && (dialogSettings == null || dialogSettings.getBoolean(LiveValidationAction.LIVE_VALIDATOR_DIALOG_SETTINGS_KEY))) + { + validationJob = new Job("Validation Job") + { + @Override + protected IStatus run(final IProgressMonitor monitor) + { + try + { + Diagnostician diagnostician = new Diagnostician() + { + @Override + public String getObjectLabel(EObject eObject) + { + String text = labelProvider != null && eObject.eIsProxy() ? ((InternalEObject)eObject).eProxyURI().toString() + : labelProvider.getText(eObject); + if (text == null || text.length() == 0) + { + text = "<i>null</i>"; + } + else + { + text = DiagnosticDecorator.escapeContent(text); + } + Image image = labelProvider != null ? labelProvider.getImage(eObject) : null; + if (image != null) + { + URI imageURI = ImageURIRegistry.INSTANCE.getImageURI(image); + return DiagnosticDecorator.enquote("<img src='" + imageURI + "'/> " + text); + } + else + { + return text; + } + } + + @Override + public boolean validate(EClass eClass, EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + monitor.worked(1); + return super.validate(eClass, eObject, diagnostics, context); + } + + @Override + protected boolean doValidateContents(EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) + { + Evolution evolution; + List<? extends EObject> eContents; + + ValidationContext validationContext = ValidationContext.getFrom(context); + if (validationContext != null) + { + ValidationPhase phase = validationContext.getPhase(); + evolution = validationContext.getEvolution(); + eContents = phase.getContentsToValidate(this, evolution, eObject, context); + } + else + { + evolution = null; + eContents = eObject.eContents(); + } + + boolean result = true; + for (EObject child : eContents) + { + Resource resource = child.eResource(); + if (resource == null && evolution != null) + { + // Change objects are not contained in a resource. Use the evolution's resource. + resource = evolution.eResource(); + } + + DiagnosticChain resourceDiagnostic = resource != null && validationContext != null + ? validationContext.getResourceDiagnostics().get(resource) + : null; + + result &= validate(child, resourceDiagnostic, context); + } + + return result; + } + }; + + final ResourceSet resourceSet = editingDomain.getResourceSet(); + + Map<Object, Object> context = diagnostician.createDefaultContext(); + context.put(EObjectValidator.ROOT_OBJECT, new Object()); // Disable circular containment validation. + + { /////////////////////////////////////////////////////////////////////////////// + + Evolution evolution = EvolutionImpl.get(resourceSet); + ValidationContext validationContext = new ValidationContext(evolution); + validationContext.putInto(context); + + int count = 0; + for (ValidationPhase phase : ValidationPhase.values()) + { + validationContext.setPhase(phase); + + // int xxx; + // System.out.println("Count " + phase); + + count += countObjects(diagnostician, evolution, validationContext, context, monitor); + } + + scheduledResources.clear(); + monitor.beginTask("", count); + + Map<Resource, BasicDiagnostic> resourceDiagnostics = validationContext.getResourceDiagnostics(); + final BasicDiagnostic rootDiagnostic = new BasicDiagnostic(EObjectValidator.DIAGNOSTIC_SOURCE, 0, + EMFEditUIPlugin.INSTANCE.getString("_UI_DiagnosisOfNObjects_message", new String[] { "" + resourceDiagnostics.size() }), + new Object[] { resourceSet }); + + for (BasicDiagnostic resourceDiagnostic : resourceDiagnostics.values()) + { + rootDiagnostic.add(resourceDiagnostic); + } + + BasicDiagnostic modelSetResourceDiagnostic = resourceDiagnostics.get(evolution.eResource()); + + for (ValidationPhase phase : ValidationPhase.values()) + { + validationContext.setPhase(phase); + + // int xxx; + // System.out.println("Validate " + phase); + + monitor + .setTaskName(EvolutionEditorPlugin.INSTANCE.getString("_UI_ValidatingPhase_message", new Object[] { Integer.toString(phase.ordinal()) })); + + boolean valid = diagnostician.validate(evolution, modelSetResourceDiagnostic, context); + if (!valid) + { + break; + } + } + + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + monitor.worked(1); + + DiagnosticAdapter.update(resourceSet, rootDiagnostic); + + } /////////////////////////////////////////////////////////////////////////////// + + Display.getDefault().asyncExec(new Runnable() + { + public void run() + { + validationJob = null; + if (!monitor.isCanceled() && !scheduledResources.isEmpty()) + { + PhasedLiveValidator.this.scheduleValidation(); + } + } + }); + + return Status.OK_STATUS; + } + catch (RuntimeException exception) + { + int xxx; + exception.printStackTrace(); + + validationJob = null; + return Status.CANCEL_STATUS; + } + } + + private int countObjects(Diagnostician diagnostician, EObject eObject, ValidationContext validationContext, Map<Object, Object> context, + IProgressMonitor monitor) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + for (EReference eReference : eObject.eClass().getEAllReferences()) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + + if (eReference == EvolutionPackage.Literals.MODEL_SET__CHANGE) + { + continue; + } + + if (eReference.isContainment() || eReference.isContainer()) + { + continue; + } + + // Resolve all proxies. + if (eReference.isResolveProxies()) + { + Object value = eObject.eGet(eReference, true); + if (eReference.isMany()) + { + @SuppressWarnings("unchecked") + List<EObject> list = (List<EObject>)value; + + for (@SuppressWarnings("unused") + EObject element : list) + { + if (monitor.isCanceled()) + { + throw new RuntimeException(); + } + } + } + } + } + + Resource resource = eObject.eResource(); + if (resource != null) + { + Map<Resource, BasicDiagnostic> resourceDiagnostics = validationContext.getResourceDiagnostics(); + if (!resourceDiagnostics.containsKey(resource)) + { + BasicDiagnostic diagnostic = new BasicDiagnostic(EObjectValidator.DIAGNOSTIC_SOURCE, 0, + EMFEditUIPlugin.INSTANCE.getString("_UI_DiagnosisOfNObjects_message", new String[] { "1" }), new Object[] { resource }); + resourceDiagnostics.put(resource, diagnostic); + } + } + + Evolution evolution = validationContext.getEvolution(); + ValidationPhase phase = validationContext.getPhase(); + int count = 1; + + for (EObject child : phase.getContentsToValidate(diagnostician, evolution, eObject, context)) + { + count += countObjects(diagnostician, child, validationContext, context, monitor); + } + + return count; + } + }; + + validationJob.setPriority(Job.DECORATE); + validationJob.schedule(500); + } + } + } + + /** + * @author Eike Stepper + */ + private static class DiagnosticContentProvider implements IStructuredContentProvider + { + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + } + + public Object[] getElements(Object inputElement) + { + List<Diagnostic> result = new ArrayList<Diagnostic>(); + + @SuppressWarnings("unchecked") + List<Diagnostic> diagnostics = (List<Diagnostic>)inputElement; + for (Diagnostic diagnostic : diagnostics) + { + collectDiagnostics(diagnostic, result); + } + + return result.toArray(new Diagnostic[result.size()]); + } + + private void collectDiagnostics(Diagnostic diagnostic, List<Diagnostic> result) + { + if (isRelevant(diagnostic)) + { + result.add(diagnostic); + } + + for (Diagnostic child : diagnostic.getChildren()) + { + collectDiagnostics(child, result); + } + } + + private boolean isRelevant(Diagnostic diagnostic) + { + // if (diagnostic.getSeverity() != Diagnostic.ERROR) + // { + // return false; + // } + + List<?> data = diagnostic.getData(); + if (data.isEmpty()) + { + return false; + } + + if (data.get(0) instanceof Resource) + { + return false; + } + + return true; + } + + public void dispose() + { + } + } + + /** + * This is the method used by the framework to install your own controls. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public void createPages() + { + // Creates the model from the editor input + // + createModel(); + + // Only creates the other pages if there is something that can be edited + // + if (!getEditingDomain().getResourceSet().getResources().isEmpty()) + { + // Create a page for the selection tree view. + // + + SashForm mainSash = new SashForm(getContainer(), SWT.VERTICAL); + mainSash.setLayoutData(new GridData(GridData.FILL_BOTH | GridData.GRAB_VERTICAL)); + + selectionViewer = createSelectionViewer(mainSash); + TableViewer problemViewer = createProblemViewer(mainSash); + + mainSash.setWeights(new int[] { 70, 30 }); + + int pageIndex = addPage(mainSash); + setPageText(pageIndex, getString("_UI_SelectionPage_label")); + + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + if (!getContainer().isDisposed()) + { + setActivePage(0); + } + } + }); + + this.problemViewer = problemViewer; + } + + // Ensures that this editor will only display the page's tab + // area if there are more than one page + // + getContainer().addControlListener(new ControlAdapter() + { + boolean guard = false; + + @Override + public void controlResized(ControlEvent event) + { + if (!guard) + { + guard = true; + hideTabs(); + guard = false; + } + } + }); + + getSite().getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + updateProblemIndication(); + } + }); + } + + private TreeViewer createSelectionViewer(Composite parent) + { + Tree tree = new Tree(parent, SWT.MULTI); + TreeViewer selectionViewer = new TreeViewer(tree); + setCurrentViewer(selectionViewer); + + DiagnosticDecorator diagnosticDecorator = new DiagnosticDecorator.Styled(editingDomain, selectionViewer, + EvolutionEditorPlugin.getPlugin().getDialogSettings()) + { + @Override + protected void redecorate() + { + super.redecorate(); + handleDiagnostics(diagnostics); + } + + @Override + protected LiveValidator getLiveValidator() + { + if (liveValidator == null && editingDomain != null) + { + Field field = ReflectUtil.getField(DiagnosticDecorator.class, "LIVE_VALIDATORS"); + + @SuppressWarnings("unchecked") + Map<EditingDomain, LiveValidator> LIVE_VALIDATORS = (Map<EditingDomain, LiveValidator>)ReflectUtil.getValue(field, null); + + liveValidator = LIVE_VALIDATORS.get(editingDomain); + if (liveValidator == null) + { + liveValidator = new PhasedLiveValidator(editingDomain, dialogSettings); + + LIVE_VALIDATORS.put(editingDomain, liveValidator); + } + + liveValidator.register(this); + } + + return liveValidator; + } + }; + + selectionViewer.setUseHashlookup(true); + selectionViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + selectionViewer.setLabelProvider(new DelegatingStyledCellLabelProvider.FontAndColorProvider(new DecoratingColumLabelProvider.StyledLabelProvider( + new AdapterFactoryLabelProvider.StyledLabelProvider(adapterFactory, selectionViewer), diagnosticDecorator))); + selectionViewer.setInput(editingDomain.getResourceSet().getResources().get(0)); + selectionViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + + new AdapterFactoryTreeEditor(selectionViewer.getTree(), adapterFactory); + new ColumnViewerInformationControlToolTipSupport(selectionViewer, + new DiagnosticDecorator.Styled.EditingDomainLocationListener(editingDomain, selectionViewer)); + + createContextMenuFor(selectionViewer); + return selectionViewer; + } + + private TableViewer createProblemViewer(Composite parent) + { + final TableViewer problemViewer = new TableViewer(parent, SWT.MULTI); + problemViewer.setContentProvider(new DiagnosticContentProvider()); + problemViewer.setInput(Collections.emptyList()); + + Table problemTable = problemViewer.getTable(); + problemTable.setHeaderVisible(true); + problemTable.setLinesVisible(true); + + createDiagnosticMessageColumn(problemViewer); + createDiagnosticElementColumn(problemViewer, adapterFactory); + createDiagnosticResourceColumn(problemViewer, adapterFactory); + // createDiagnosticIDColumn(problemViewer); + + // { + // TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + // tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + // { + // @Override + // public String getText(Object element) + // { + // return ((Diagnostic)element).getSource(); + // } + // }); + // + // TableColumn tableColumn = tableViewerColumn.getColumn(); + // tableColumn.setResizable(true); + // tableColumn.setAlignment(SWT.LEFT); + // tableColumn.setWidth(200); + // tableColumn.setText("Source"); + // } + // + // { + // TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + // tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + // { + // + // @Override + // public String getText(Object element) + // { + // return Integer.toString(((Diagnostic)element).getCode()); + // } + // }); + // + // TableColumn tableColumn = tableViewerColumn.getColumn(); + // tableColumn.setResizable(true); + // tableColumn.setAlignment(SWT.LEFT); + // tableColumn.setWidth(70); + // tableColumn.setText("Code"); + // } + // + // { + // TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + // tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + // { + // @Override + // public String getText(Object element) + // { + // StringBuilder builder = new StringBuilder(); + // + // List<?> data = ((Diagnostic)element).getData(); + // for (Object object : data) + // { + // if (builder.length() != 0) + // { + // builder.append(", "); + // } + // + // if (object instanceof Resource) + // { + // Resource resource = (Resource)object; + // builder.append("Resource["); + // builder.append(resource.getURI()); + // builder.append("]"); + // } + // else if (object instanceof ENamedElement) + // { + // ENamedElement namedElement = (ENamedElement)object; + // builder.append(namedElement.getName()); + // } + // else if (object instanceof EObject) + // { + // EObject eObject = (EObject)object; + // builder.append(eObject.eClass().getName()); + // } + // else + // { + // builder.append(String.valueOf(object)); + // } + // } + // + // return builder.toString(); + // } + // }); + // + // TableColumn tableColumn = tableViewerColumn.getColumn(); + // tableColumn.setResizable(true); + // tableColumn.setAlignment(SWT.LEFT); + // tableColumn.setWidth(400); + // tableColumn.setText("Data"); + // } + + problemTable.addKeyListener(new KeyAdapter() + { + @Override + public void keyPressed(KeyEvent e) + { + if (e.stateMask == SWT.CTRL && e.character == '1') + { + showQuickFixes(); + } + } + }); + + problemViewer.addOpenListener(new IOpenListener() + { + public void open(OpenEvent event) + { + IStructuredSelection selection = (IStructuredSelection)event.getSelection(); + Object element = selection.getFirstElement(); + if (element instanceof Diagnostic) + { + List<?> data = ((Diagnostic)element).getData(); + int size = data.size(); + if (size != 0) + { + List<Object> list = new ArrayList<Object>(size); + for (Object object : data) + { + Object wrapper = editingDomain.getWrapper(object); + list.add(wrapper); + } + + setSelectionToViewer(list); + } + } + } + }); + + return problemViewer; + } + + public static TableViewerColumn createDiagnosticMessageColumn(final TableViewer problemViewer) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + { + @Override + public Image getImage(Object element) + { + switch (((Diagnostic)element).getSeverity()) + { + case Diagnostic.INFO: + return SharedIcons.getImage(SharedIcons.OBJ_INFO); + + default: + return SharedIcons.getImage(SharedIcons.OBJ_ERROR); + } + } + + @Override + public String getText(Object element) + { + return ((Diagnostic)element).getMessage(); + } + }); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(400); + tableColumn.setText("Message"); + return tableViewerColumn; + } + + public static TableViewerColumn createDiagnosticResourceColumn(TableViewer problemViewer, AdapterFactory adapterFactory) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ResourceColumnLabelProvider(adapterFactory)); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(450); + tableColumn.setText("Resource"); + return tableViewerColumn; + } + + public static TableViewerColumn createDiagnosticElementColumn(TableViewer problemViewer, AdapterFactory adapterFactory) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ElementColumnLabelProvider(adapterFactory)); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(200); + tableColumn.setText("Element"); + return tableViewerColumn; + } + + public static TableViewerColumn createDiagnosticIDColumn(final TableViewer problemViewer) + { + TableViewerColumn tableViewerColumn = new TableViewerColumn(problemViewer, SWT.NONE); + tableViewerColumn.setLabelProvider(new ColumnLabelProvider() + { + @Override + public String getText(Object element) + { + DiagnosticID diagnosticID = DiagnosticID.get((Diagnostic)element); + if (diagnosticID != null) + { + return diagnosticID.getValue(); + } + + return ""; + } + }); + + TableColumn tableColumn = tableViewerColumn.getColumn(); + tableColumn.setResizable(true); + tableColumn.setAlignment(SWT.LEFT); + tableColumn.setWidth(800); + tableColumn.setText("ID"); + return tableViewerColumn; + } + + /** + * @author Eike Stepper + */ + public static class ResourceColumnLabelProvider extends ColumnLabelProvider + { + protected final AdapterFactory adapterFactory; + + public ResourceColumnLabelProvider(AdapterFactory adapterFactory) + { + this.adapterFactory = adapterFactory; + } + + @Override + public Image getImage(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EObject) + { + EObject eObject = (EObject)object; + Resource resource = eObject.eResource(); + if (resource != null) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(resource, IItemLabelProvider.class); + if (labelProvider != null) + { + return ExtendedImageRegistry.getInstance().getImage(labelProvider.getImage(resource)); + } + } + } + } + + return null; + } + + @Override + public String getText(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EObject) + { + EObject eObject = (EObject)object; + Resource resource = eObject.eResource(); + if (resource != null) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(resource, IItemLabelProvider.class); + if (labelProvider != null) + { + return labelProvider.getText(resource); + } + } + } + } + + return null; + } + } + + /** + * @author Eike Stepper + */ + public static class ElementColumnLabelProvider extends ColumnLabelProvider + { + protected final AdapterFactory adapterFactory; + + public ElementColumnLabelProvider(AdapterFactory adapterFactory) + { + this.adapterFactory = adapterFactory; + } + + @Override + public Image getImage(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EObject) + { + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(object, IItemLabelProvider.class); + if (labelProvider != null) + { + return ExtendedImageRegistry.getInstance().getImage(labelProvider.getImage(object)); + } + } + } + + return null; + } + + @Override + public String getText(Object element) + { + List<?> data = ((Diagnostic)element).getData(); + if (!data.isEmpty()) + { + Object object = data.get(0); + if (object instanceof EModelElement) + { + EModelElement modelElement = (EModelElement)object; + return ElementHandler.getLabel(modelElement); + } + + if (object instanceof EObject) + { + + IItemLabelProvider labelProvider = (IItemLabelProvider)adapterFactory.adapt(object, IItemLabelProvider.class); + if (labelProvider != null) + { + return labelProvider.getText(object); + } + } + } + + return null; + } + } + + private Diagnostic[] getSelectedDiagnostics() + { + IStructuredSelection selection = problemViewer.getStructuredSelection(); + if (selection.isEmpty()) + { + return DiagnosticResolution.NO_DIAGNOSTICS; + } + + List<Diagnostic> result = new ArrayList<Diagnostic>(); + for (Iterator<?> it = selection.iterator(); it.hasNext();) + { + result.add((Diagnostic)it.next()); + } + + return result.toArray(new Diagnostic[result.size()]); + } + + private void showQuickFixes() + { + final Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap = new LinkedHashMap<DiagnosticResolution, Collection<Diagnostic>>(); + final Diagnostic[] selectedDiagnostics = getSelectedDiagnostics(); + if (selectedDiagnostics == null || selectedDiagnostics.length == 0) + { + return; + } + + final Diagnostic firstSelectedDiagnostic = selectedDiagnostics[0]; + + IRunnableWithProgress runnable = new IRunnableWithProgress() + { + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException + { + monitor.beginTask("Finding fixes", 100); + monitor.worked(20); + + DiagnosticResolution[] resolutions = DiagnosticResolution.getResolutions(firstSelectedDiagnostic, EvolutionEditor.this); + int progressCount = 80; + if (resolutions.length > 1) + { + progressCount = progressCount / resolutions.length; + } + + for (DiagnosticResolution resolution : resolutions) + { + Diagnostic[] other = resolution.findOtherDiagnostics(allDiagnostics); + if (containsAllButFirst(other, selectedDiagnostics)) + { + Collection<Diagnostic> diagnostics = new LinkedHashSet<Diagnostic>(other.length + 1); + diagnostics.add(firstSelectedDiagnostic); + diagnostics.addAll(Arrays.asList(other)); + resolutionsMap.put(resolution, diagnostics); + } + + monitor.worked(progressCount); + } + + monitor.done(); + } + }; + + IWorkbenchPartSite site = getSite(); + IWorkbenchSiteProgressService service = Adapters.adapt(site, IWorkbenchSiteProgressService.class); + + Shell shell = site.getShell(); + IRunnableContext context = new ProgressMonitorDialog(shell); + + try + { + if (service == null) + { + PlatformUI.getWorkbench().getProgressService().runInUI(context, runnable, null); + } + else + { + service.runInUI(context, runnable, null); + } + } + catch (InvocationTargetException ex) + { + throw WrappedException.wrap(ex); + } + catch (InterruptedException ex) + { + throw WrappedException.wrap(ex); + } + + String description = StringUtil.safe(firstSelectedDiagnostic.getMessage()); + if (resolutionsMap.isEmpty()) + { + if (selectedDiagnostics.length == 1) + { + MessageDialog.openInformation(shell, "Quick Fix", NLS.bind("No fixes available for:\n\n {0}.", new Object[] { description })); + } + else + { + MessageDialog.openInformation(shell, "Quick Fix", "The selected problems do not have a common applicable quick fix."); + } + } + else + { + String problemDescription = NLS.bind("Select the fix for ''{0}''.", description); + + Wizard wizard = new QuickFixWizard(problemDescription, selectedDiagnostics, resolutionsMap, editingDomain); + wizard.setWindowTitle("Quick Fix"); + + WizardDialog dialog = new QuickFixWizardDialog(shell, wizard); + dialog.open(); + } + } + + /** + * Checks whether the given extent contains all but the first element from the given members array. + * + * @param extent the array which should contain the elements + * @param members the elements to check + * @return <code>true</code> if all but the first element are inside the extent + */ + private static boolean containsAllButFirst(Object[] extent, Object[] members) + { + outer: for (int i = 1; i < members.length; i++) + { + for (int j = 0; j < extent.length; j++) + { + if (members[i] == extent[j]) + { + continue outer; + } + } + + return false; + } + + return true; + } + + /** + * @author Eike Stepper + */ + private static final class QuickFixWizardDialog extends WizardDialog + { + public QuickFixWizardDialog(Shell parentShell, IWizard newWizard) + { + super(parentShell, newWizard); + setShellStyle(SWT.CLOSE | SWT.MAX | SWT.TITLE | SWT.BORDER | SWT.MODELESS | SWT.RESIZE | getDefaultOrientation()); + } + } + + protected void handleDiagnostics(List<Diagnostic> diagnostics) + { + List<Diagnostic> result = new ArrayList<Diagnostic>(); + flattenDiagnostics(diagnostics, result); + allDiagnostics = result.toArray(new Diagnostic[result.size()]); + + if (problemViewer != null && !problemViewer.getControl().isDisposed()) + { + problemViewer.setInput(diagnostics); + } + } + + private void flattenDiagnostics(List<Diagnostic> diagnostics, List<Diagnostic> result) + { + for (Diagnostic diagnostic : diagnostics) + { + result.add(diagnostic); + flattenDiagnostics(diagnostic.getChildren(), result); + } + } + + /** + * If there is just one page in the multi-page editor part, + * this hides the single tab at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void hideTabs() + { + if (getPageCount() <= 1) + { + setPageText(0, ""); + if (getContainer() instanceof CTabFolder) + { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, 2 * point.y - clientArea.height - clientArea.y); + } + } + } + + /** + * If there is more than one page in the multi-page editor part, + * this shows the tabs at the bottom. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void showTabs() + { + if (getPageCount() > 1) + { + setPageText(0, getString("_UI_SelectionPage_label")); + if (getContainer() instanceof CTabFolder) + { + Point point = getContainer().getSize(); + Rectangle clientArea = getContainer().getClientArea(); + getContainer().setSize(point.x, clientArea.height + clientArea.y); + } + } + } + + /** + * This is used to track the active viewer. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected void pageChange(int pageIndex) + { + super.pageChange(pageIndex); + + if (contentOutlinePage != null) + { + handleContentOutlineSelection(contentOutlinePage.getSelection()); + } + } + + /** + * This is how the framework determines which interfaces we implement. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public <T> T getAdapter(Class<T> key) + { + if (key.equals(IContentOutlinePage.class)) + { + return showOutlineView() ? key.cast(getContentOutlinePage()) : null; + } + else if (key.equals(IPropertySheetPage.class)) + { + return key.cast(getPropertySheetPage()); + } + else if (key.equals(IGotoMarker.class)) + { + return key.cast(this); + } + else if (key.equals(IFindReplaceTarget.class)) + { + return FindAndReplaceTarget.getAdapter(key, this, EvolutionEditorPlugin.getPlugin()); + } + else + { + return super.getAdapter(key); + } + } + + /** + * This accesses a cached version of the content outliner. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IContentOutlinePage getContentOutlinePage() + { + if (contentOutlinePage == null) + { + // The content outline is just a tree. + // + class MyContentOutlinePage extends ContentOutlinePage + { + @Override + public void createControl(Composite parent) + { + super.createControl(parent); + contentOutlineViewer = getTreeViewer(); + contentOutlineViewer.addSelectionChangedListener(this); + + // Set up the tree viewer. + // + contentOutlineViewer.setUseHashlookup(true); + contentOutlineViewer.setContentProvider(new AdapterFactoryContentProvider(adapterFactory)); + contentOutlineViewer.setLabelProvider(new DelegatingStyledCellLabelProvider.FontAndColorProvider( + new DecoratingColumLabelProvider.StyledLabelProvider(new AdapterFactoryLabelProvider.StyledLabelProvider(adapterFactory, contentOutlineViewer), + new DiagnosticDecorator.Styled(editingDomain, contentOutlineViewer, EvolutionEditorPlugin.getPlugin().getDialogSettings())))); + contentOutlineViewer.setInput(editingDomain.getResourceSet()); + + new ColumnViewerInformationControlToolTipSupport(contentOutlineViewer, + new DiagnosticDecorator.Styled.EditingDomainLocationListener(editingDomain, contentOutlineViewer)); + + // Make sure our popups work. + // + createContextMenuFor(contentOutlineViewer); + + if (!editingDomain.getResourceSet().getResources().isEmpty()) + { + // Select the root object in the view. + // + contentOutlineViewer.setSelection(new StructuredSelection(editingDomain.getResourceSet().getResources().get(0)), true); + } + } + + @Override + public void makeContributions(IMenuManager menuManager, IToolBarManager toolBarManager, IStatusLineManager statusLineManager) + { + super.makeContributions(menuManager, toolBarManager, statusLineManager); + contentOutlineStatusLineManager = statusLineManager; + } + + @Override + public void setActionBars(IActionBars actionBars) + { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + } + + contentOutlinePage = new MyContentOutlinePage(); + + // Listen to selection so that we can handle it is a special way. + // + contentOutlinePage.addSelectionChangedListener(new ISelectionChangedListener() + { + // This ensures that we handle selections correctly. + // + public void selectionChanged(SelectionChangedEvent event) + { + handleContentOutlineSelection(event.getSelection()); + } + }); + } + + return contentOutlinePage; + } + + /** + * @author Eike Stepper + */ + private static class DelegatingItemPropertyDescriptor implements IItemPropertyDescriptor + { + private final IItemPropertyDescriptor itemPropertyDescriptor; + + private DelegatingItemPropertyDescriptor(IItemPropertyDescriptor itemPropertyDescriptor) + { + this.itemPropertyDescriptor = itemPropertyDescriptor; + } + + public Object getPropertyValue(Object object) + { + return itemPropertyDescriptor.getPropertyValue(object); + } + + public boolean isPropertySet(Object object) + { + return itemPropertyDescriptor.isPropertySet(object); + } + + public boolean canSetProperty(Object object) + { + return itemPropertyDescriptor.canSetProperty(object); + } + + public void resetPropertyValue(Object object) + { + itemPropertyDescriptor.resetPropertyValue(object); + } + + public void setPropertyValue(Object object, Object value) + { + itemPropertyDescriptor.setPropertyValue(object, value); + } + + public String getCategory(Object object) + { + return itemPropertyDescriptor.getCategory(object); + } + + public String getDescription(Object object) + { + return itemPropertyDescriptor.getDescription(object); + } + + public String getDisplayName(Object object) + { + return itemPropertyDescriptor.getDisplayName(object); + } + + public String[] getFilterFlags(Object object) + { + return itemPropertyDescriptor.getFilterFlags(object); + } + + public Object getHelpContextIds(Object object) + { + return itemPropertyDescriptor.getHelpContextIds(object); + } + + public String getId(Object object) + { + return itemPropertyDescriptor.getId(object); + } + + public IItemLabelProvider getLabelProvider(Object object) + { + return itemPropertyDescriptor.getLabelProvider(object); + } + + public boolean isCompatibleWith(Object object, Object anotherObject, IItemPropertyDescriptor anotherPropertyDescriptor) + { + return itemPropertyDescriptor.isCompatibleWith(object, anotherObject, anotherPropertyDescriptor); + } + + public Object getFeature(Object object) + { + return itemPropertyDescriptor.getFeature(object); + } + + public boolean isMany(Object object) + { + return itemPropertyDescriptor.isMany(object); + } + + public Collection<?> getChoiceOfValues(Object object) + { + return itemPropertyDescriptor.getChoiceOfValues(object); + } + + public boolean isMultiLine(Object object) + { + return itemPropertyDescriptor.isMultiLine(object); + } + + public boolean isSortChoices(Object object) + { + return itemPropertyDescriptor.isSortChoices(object); + } + } + + /** + * This accesses a cached version of the property sheet. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public IPropertySheetPage getPropertySheetPage() + { + PropertySheetPage propertySheetPage = new ExtendedPropertySheetPage(editingDomain, ExtendedPropertySheetPage.Decoration.LIVE, + EvolutionEditorPlugin.getPlugin().getDialogSettings(), 0, true) + { + { + setSorter(new PropertySheetSorter() + { + @Override + public void sort(IPropertySheetEntry[] entries) + { + // Intentionally left empty + } + }); + } + + @Override + public void setSelectionToViewer(List<?> selection) + { + EvolutionEditor.this.setSelectionToViewer(selection); + EvolutionEditor.this.setFocus(); + } + + @Override + public void setActionBars(IActionBars actionBars) + { + super.setActionBars(actionBars); + getActionBarContributor().shareGlobalActions(this, actionBars); + } + }; + + propertySheetPage.setPropertySourceProvider(new AdapterFactoryContentProvider(adapterFactory) + { + @Override + protected IPropertySource createPropertySource(Object object, IItemPropertySource itemPropertySource) + { + if (isReadOnlyObject(object)) + { + /** + * Create no cell editor for read-only objects. + */ + return new PropertySource(object, itemPropertySource) + { + @Override + protected IPropertyDescriptor createPropertyDescriptor(final IItemPropertyDescriptor itemPropertyDescriptor) + { + return super.createPropertyDescriptor(new DelegatingItemPropertyDescriptor(itemPropertyDescriptor) + { + @Override + public boolean canSetProperty(Object object) + { + return false; + } + }); + } + }; + } + else if (object instanceof EModelElement && evolution.containsElement((EModelElement)object)) + { + /** + * Eliminate released elements from selection choices. + */ + return new PropertySource(object, itemPropertySource) + { + @Override + protected IPropertyDescriptor createPropertyDescriptor(final IItemPropertyDescriptor itemPropertyDescriptor) + { + return super.createPropertyDescriptor(new DelegatingItemPropertyDescriptor(itemPropertyDescriptor) + { + @Override + public Collection<?> getChoiceOfValues(Object object) + { + Collection<?> values = super.getChoiceOfValues(object); + if (values != null) + { + for (Iterator<?> it = values.iterator(); it.hasNext();) + { + Object value = it.next(); + if (value instanceof EModelElement) + { + EModelElement modelElement = (EModelElement)value; + if (!evolution.containsElement(modelElement)) + { + it.remove(); + } + } + } + } + + return values; + } + }); + } + }; + } + + return super.createPropertySource(object, itemPropertySource); + } + }); + + propertySheetPages.add(propertySheetPage); + + return propertySheetPage; + } + + /** + * This deals with how we want selection in the outliner to affect the other views. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void handleContentOutlineSelection(ISelection selection) + { + if (selectionViewer != null && !selection.isEmpty() && selection instanceof IStructuredSelection) + { + Iterator<?> selectedElements = ((IStructuredSelection)selection).iterator(); + if (selectedElements.hasNext()) + { + // Get the first selected element. + // + Object selectedElement = selectedElements.next(); + + ArrayList<Object> selectionList = new ArrayList<Object>(); + selectionList.add(selectedElement); + while (selectedElements.hasNext()) + { + selectionList.add(selectedElements.next()); + } + + // Set the selection to the widget. + // + selectionViewer.setSelection(new StructuredSelection(selectionList)); + } + } + } + + /** + * This is for implementing {@link IEditorPart} and simply tests the command stack. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isDirty() + { + return ((BasicCommandStack)editingDomain.getCommandStack()).isSaveNeeded(); + } + + /** + * This is for implementing {@link IEditorPart} and simply saves the model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSave(IProgressMonitor progressMonitor) + { + // Save only resources that have actually changed. + // + final Map<Object, Object> saveOptions = new HashMap<Object, Object>(); + saveOptions.put(Resource.OPTION_SAVE_ONLY_IF_CHANGED, Resource.OPTION_SAVE_ONLY_IF_CHANGED_MEMORY_BUFFER); + saveOptions.put(Resource.OPTION_LINE_DELIMITER, Resource.OPTION_LINE_DELIMITER_UNSPECIFIED); + + // Do the work within an operation because this is a long running activity that modifies the workbench. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() + { + // This is the method that gets invoked when the operation runs. + // + @Override + public void execute(IProgressMonitor monitor) + { + // Save the resources to the file system. + // + boolean first = true; + List<Resource> resources = editingDomain.getResourceSet().getResources(); + for (int i = 0; i < resources.size(); ++i) + { + Resource resource = resources.get(i); + if ((first || !resource.getContents().isEmpty() || isPersisted(resource)) && !editingDomain.isReadOnly(resource)) + { + try + { + long timeStamp = resource.getTimeStamp(); + resource.save(saveOptions); + if (resource.getTimeStamp() != timeStamp) + { + savedResources.add(resource); + } + } + catch (Exception exception) + { + resourceToDiagnosticMap.put(resource, analyzeResourceProblems(resource, exception)); + } + first = false; + } + } + } + }; + + updateProblemIndication = false; + try + { + // This runs the options, and shows progress. + // + new ProgressMonitorDialog(getSite().getShell()).run(true, false, operation); + + // Refresh the necessary state. + // + ((BasicCommandStack)editingDomain.getCommandStack()).saveIsDone(); + firePropertyChange(IEditorPart.PROP_DIRTY); + } + catch (Exception exception) + { + // Something went wrong that shouldn't. + // + EvolutionEditorPlugin.INSTANCE.log(exception); + } + updateProblemIndication = true; + updateProblemIndication(); + } + + /** + * This returns whether something has been persisted to the URI of the specified resource. + * The implementation uses the URI converter from the editor's resource set to try to open an input stream. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean isPersisted(Resource resource) + { + boolean result = false; + try + { + InputStream stream = editingDomain.getResourceSet().getURIConverter().createInputStream(resource.getURI()); + if (stream != null) + { + result = true; + stream.close(); + } + } + catch (IOException e) + { + // Ignore + } + return result; + } + + /** + * This always returns true because it is not currently supported. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean isSaveAsAllowed() + { + return true; + } + + /** + * This also changes the editor's input. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void doSaveAs() + { + SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell()); + saveAsDialog.open(); + IPath path = saveAsDialog.getResult(); + if (path != null) + { + IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(path); + if (file != null) + { + doSaveAs(URI.createPlatformResourceURI(file.getFullPath().toString(), true), new FileEditorInput(file)); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void doSaveAs(URI uri, IEditorInput editorInput) + { + editingDomain.getResourceSet().getResources().get(0).setURI(uri); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + IProgressMonitor progressMonitor = getActionBars().getStatusLineManager() != null ? getActionBars().getStatusLineManager().getProgressMonitor() + : new NullProgressMonitor(); + doSave(progressMonitor); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void gotoMarker(IMarker marker) + { + List<?> targetObjects = markerHelper.getTargetObjects(editingDomain, marker); + if (!targetObjects.isEmpty()) + { + setSelectionToViewer(targetObjects); + } + } + + /** + * This is called during startup. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void init(IEditorSite site, IEditorInput editorInput) + { + setSite(site); + setInputWithNotify(editorInput); + setPartName(editorInput.getName()); + site.setSelectionProvider(this); + site.getPage().addPartListener(partListener); + ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChangeListener, IResourceChangeEvent.POST_CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setFocus() + { + getControl(getActivePage()).setFocus(); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void addSelectionChangedListener(ISelectionChangedListener listener) + { + selectionChangedListeners.add(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider}. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void removeSelectionChangedListener(ISelectionChangedListener listener) + { + selectionChangedListeners.remove(listener); + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to return this editor's overall selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ISelection getSelection() + { + return editorSelection; + } + + /** + * This implements {@link org.eclipse.jface.viewers.ISelectionProvider} to set this editor's overall selection. + * Calling this result will notify the listeners. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setSelection(ISelection selection) + { + editorSelection = selection; + + for (ISelectionChangedListener listener : selectionChangedListeners) + { + listener.selectionChanged(new SelectionChangedEvent(this, selection)); + } + setStatusLineManager(selection); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setStatusLineManager(ISelection selection) + { + IStatusLineManager statusLineManager = currentViewer != null && currentViewer == contentOutlineViewer ? contentOutlineStatusLineManager + : getActionBars().getStatusLineManager(); + + if (statusLineManager != null) + { + if (selection instanceof IStructuredSelection) + { + Collection<?> collection = ((IStructuredSelection)selection).toList(); + switch (collection.size()) + { + case 0: + { + statusLineManager.setMessage(getString("_UI_NoObjectSelected")); + break; + } + case 1: + { + String text = new AdapterFactoryItemDelegator(adapterFactory).getText(collection.iterator().next()); + statusLineManager.setMessage(getString("_UI_SingleObjectSelected", text)); + break; + } + default: + { + statusLineManager.setMessage(getString("_UI_MultiObjectSelected", Integer.toString(collection.size()))); + break; + } + } + } + else + { + statusLineManager.setMessage(""); + } + } + } + + /** + * This looks up a string in the plugin's plugin.properties file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key) + { + return EvolutionEditorPlugin.INSTANCE.getString(key); + } + + /** + * This looks up a string in plugin.properties, making a substitution. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static String getString(String key, Object s1) + { + return EvolutionEditorPlugin.INSTANCE.getString(key, new Object[] { s1 }); + } + + /** + * This implements {@link org.eclipse.jface.action.IMenuListener} to help fill the context menus with contributions from the Edit menu. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void menuAboutToShow(IMenuManager menuManager) + { + ((IMenuListener)getEditorSite().getActionBarContributor()).menuAboutToShow(menuManager); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EditingDomainActionBarContributor getActionBarContributor() + { + return (EditingDomainActionBarContributor)getEditorSite().getActionBarContributor(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IActionBars getActionBars() + { + return getActionBarContributor().getActionBars(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public AdapterFactory getAdapterFactory() + { + return adapterFactory; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void dispose() + { + updateProblemIndication = false; + + ResourcesPlugin.getWorkspace().removeResourceChangeListener(resourceChangeListener); + + getSite().getPage().removePartListener(partListener); + + adapterFactory.dispose(); + + if (getActionBarContributor().getActiveEditor() == this) + { + getActionBarContributor().setActiveEditor(null); + } + + for (PropertySheetPage propertySheetPage : propertySheetPages) + { + propertySheetPage.dispose(); + } + + if (contentOutlinePage != null) + { + contentOutlinePage.dispose(); + } + + super.dispose(); + } + + /** + * Returns whether the outline view should be presented to the user. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean showOutlineView() + { + return false; + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditorPlugin.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditorPlugin.java new file mode 100644 index 0000000000..8aa42e9f46 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionEditorPlugin.java @@ -0,0 +1,96 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.common.EMFPlugin; +import org.eclipse.emf.common.ui.EclipseUIPlugin; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.ecore.provider.EcoreEditPlugin; + +/** + * This is the central singleton for the Evolution editor plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class EvolutionEditorPlugin extends EMFPlugin +{ + public static final String PLUGIN_ID = "org.eclipse.emf.cdo.evolution.editor"; + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final EvolutionEditorPlugin INSTANCE = new EvolutionEditorPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionEditorPlugin() + { + super(new ResourceLocator[] { EcoreEditPlugin.INSTANCE, }); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() + { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() + { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipseUIPlugin + { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() + { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionModelWizard.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionModelWizard.java new file mode 100644 index 0000000000..1e7b23d1f7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/EvolutionModelWizard.java @@ -0,0 +1,657 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.presentation; + +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.provider.EvolutionEditPlugin; + +import org.eclipse.emf.common.CommonPlugin; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EObject; +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.XMLResource; +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.Path; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.actions.WorkspaceModifyOperation; +import org.eclipse.ui.dialogs.WizardNewFileCreationPage; +import org.eclipse.ui.part.FileEditorInput; +import org.eclipse.ui.part.ISetSelectionTarget; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.MissingResourceException; +import java.util.StringTokenizer; + +/** + * This is a simple wizard for creating a new model file. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionModelWizard extends Wizard implements INewWizard +{ + /** + * The supported extensions for created files. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<String> FILE_EXTENSIONS = Collections + .unmodifiableList(Arrays.asList(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameExtensions").split("\\s*,\\s*"))); + + /** + * A formatted list of supported file extensions, suitable for display. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final String FORMATTED_FILE_EXTENSIONS = EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameExtensions") + .replaceAll("\\s*,\\s*", ", "); + + /** + * This caches an instance of the model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionPackage evolutionPackage = EvolutionPackage.eINSTANCE; + + /** + * This caches an instance of the model factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionFactory evolutionFactory = evolutionPackage.getEvolutionFactory(); + + /** + * This is the file creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionModelWizardNewFileCreationPage newFileCreationPage; + + /** + * This is the initial object creation page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionModelWizardInitialObjectCreationPage initialObjectCreationPage; + + /** + * Remember the selection during initialization for populating the default container. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IStructuredSelection selection; + + /** + * Remember the workbench during initialization. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected IWorkbench workbench; + + /** + * Caches the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected List<String> initialObjectNames; + + /** + * This just records the information. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void init(IWorkbench workbench, IStructuredSelection selection) + { + this.workbench = workbench; + this.selection = selection; + setWindowTitle(EvolutionEditorPlugin.INSTANCE.getString("_UI_Wizard_label")); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE.getImageDescriptor(EvolutionEditorPlugin.INSTANCE.getImage("full/wizban/NewEvolution"))); + } + + /** + * Returns the names of the types that can be created as the root object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getInitialObjectNames() + { + if (initialObjectNames == null) + { + initialObjectNames = new ArrayList<String>(); + for (EClassifier eClassifier : evolutionPackage.getEClassifiers()) + { + if (eClassifier instanceof EClass) + { + EClass eClass = (EClass)eClassifier; + if (!eClass.isAbstract()) + { + initialObjectNames.add(eClass.getName()); + } + } + } + Collections.sort(initialObjectNames, CommonPlugin.INSTANCE.getComparator()); + } + return initialObjectNames; + } + + /** + * Create a new model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EObject createInitialModel() + { + EClass eClass = (EClass)evolutionPackage.getEClassifier(initialObjectCreationPage.getInitialObjectName()); + EObject rootObject = evolutionFactory.create(eClass); + return rootObject; + } + + /** + * Do the work after everything is specified. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean performFinish() + { + try + { + // Remember the file. + // + final IFile modelFile = getModelFile(); + + // Do the work within an operation. + // + WorkspaceModifyOperation operation = new WorkspaceModifyOperation() + { + @Override + protected void execute(IProgressMonitor progressMonitor) + { + try + { + // Create a resource set + // + ResourceSet resourceSet = new ResourceSetImpl(); + + // Get the URI of the model file. + // + URI fileURI = URI.createPlatformResourceURI(modelFile.getFullPath().toString(), true); + + // Create a resource for this file. + // + Resource resource = resourceSet.createResource(fileURI); + + // Add the initial model object to the contents. + // + EObject rootObject = createInitialModel(); + if (rootObject != null) + { + resource.getContents().add(rootObject); + } + + // Save the contents of the resource to the file system. + // + Map<Object, Object> options = new HashMap<Object, Object>(); + options.put(XMLResource.OPTION_ENCODING, initialObjectCreationPage.getEncoding()); + resource.save(options); + } + catch (Exception exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + } + finally + { + progressMonitor.done(); + } + } + }; + + getContainer().run(false, false, operation); + + // Select the new file resource in the current view. + // + IWorkbenchWindow workbenchWindow = workbench.getActiveWorkbenchWindow(); + IWorkbenchPage page = workbenchWindow.getActivePage(); + final IWorkbenchPart activePart = page.getActivePart(); + if (activePart instanceof ISetSelectionTarget) + { + final ISelection targetSelection = new StructuredSelection(modelFile); + getShell().getDisplay().asyncExec(new Runnable() + { + public void run() + { + ((ISetSelectionTarget)activePart).selectReveal(targetSelection); + } + }); + } + + // Open an editor on the new file. + // + try + { + page.openEditor(new FileEditorInput(modelFile), workbench.getEditorRegistry().getDefaultEditor(modelFile.getFullPath().toString()).getId()); + } + catch (PartInitException exception) + { + MessageDialog.openError(workbenchWindow.getShell(), EvolutionEditorPlugin.INSTANCE.getString("_UI_OpenEditorError_label"), exception.getMessage()); + return false; + } + + return true; + } + catch (Exception exception) + { + EvolutionEditorPlugin.INSTANCE.log(exception); + return false; + } + } + + /** + * This is the one page of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class EvolutionModelWizardNewFileCreationPage extends WizardNewFileCreationPage + { + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionModelWizardNewFileCreationPage(String pageId, IStructuredSelection selection) + { + super(pageId, selection); + } + + /** + * The framework calls this to see if the file is correct. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected boolean validatePage() + { + if (super.validatePage()) + { + String extension = new Path(getFileName()).getFileExtension(); + if (extension == null || !FILE_EXTENSIONS.contains(extension)) + { + String key = FILE_EXTENSIONS.size() > 1 ? "_WARN_FilenameExtensions" : "_WARN_FilenameExtension"; + setErrorMessage(EvolutionEditorPlugin.INSTANCE.getString(key, new Object[] { FORMATTED_FILE_EXTENSIONS })); + return false; + } + return true; + } + return false; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() + { + return ResourcesPlugin.getWorkspace().getRoot().getFile(getContainerFullPath().append(getFileName())); + } + } + + /** + * This is the page where the type of object to create is selected. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public class EvolutionModelWizardInitialObjectCreationPage extends WizardPage + { + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo initialObjectField; + + /** + * @generated + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + */ + protected List<String> encodings; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Combo encodingField; + + /** + * Pass in the selection. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionModelWizardInitialObjectCreationPage(String pageId) + { + super(pageId); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createControl(Composite parent) + { + Composite composite = new Composite(parent, SWT.NONE); + { + GridLayout layout = new GridLayout(); + layout.numColumns = 1; + layout.verticalSpacing = 12; + composite.setLayout(layout); + + GridData data = new GridData(); + data.verticalAlignment = GridData.FILL; + data.grabExcessVerticalSpace = true; + data.horizontalAlignment = GridData.FILL; + composite.setLayoutData(data); + } + + Label containerLabel = new Label(composite, SWT.LEFT); + { + containerLabel.setText(EvolutionEditorPlugin.INSTANCE.getString("_UI_ModelObject")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + containerLabel.setLayoutData(data); + } + + initialObjectField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + initialObjectField.setLayoutData(data); + } + + for (String objectName : getInitialObjectNames()) + { + initialObjectField.add(getLabel(objectName)); + } + + if (initialObjectField.getItemCount() == 1) + { + initialObjectField.select(0); + } + initialObjectField.addModifyListener(validator); + + Label encodingLabel = new Label(composite, SWT.LEFT); + { + encodingLabel.setText(EvolutionEditorPlugin.INSTANCE.getString("_UI_XMLEncoding")); + + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + encodingLabel.setLayoutData(data); + } + encodingField = new Combo(composite, SWT.BORDER); + { + GridData data = new GridData(); + data.horizontalAlignment = GridData.FILL; + data.grabExcessHorizontalSpace = true; + encodingField.setLayoutData(data); + } + + for (String encoding : getEncodings()) + { + encodingField.add(encoding); + } + + encodingField.select(0); + encodingField.addModifyListener(validator); + + setPageComplete(validatePage()); + setControl(composite); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModifyListener validator = new ModifyListener() + { + public void modifyText(ModifyEvent e) + { + setPageComplete(validatePage()); + } + }; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validatePage() + { + return getInitialObjectName() != null && getEncodings().contains(encodingField.getText()); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void setVisible(boolean visible) + { + super.setVisible(visible); + if (visible) + { + if (initialObjectField.getItemCount() == 1) + { + initialObjectField.clearSelection(); + encodingField.setFocus(); + } + else + { + encodingField.clearSelection(); + initialObjectField.setFocus(); + } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getInitialObjectName() + { + String label = initialObjectField.getText(); + + for (String name : getInitialObjectNames()) + { + if (getLabel(name).equals(label)) + { + return name; + } + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getEncoding() + { + return encodingField.getText(); + } + + /** + * Returns the label for the specified type name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected String getLabel(String typeName) + { + try + { + return EvolutionEditPlugin.INSTANCE.getString("_UI_" + typeName + "_type"); + } + catch (MissingResourceException mre) + { + EvolutionEditorPlugin.INSTANCE.log(mre); + } + return typeName; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected Collection<String> getEncodings() + { + if (encodings == null) + { + encodings = new ArrayList<String>(); + for (StringTokenizer stringTokenizer = new StringTokenizer(EvolutionEditorPlugin.INSTANCE.getString("_UI_XMLEncodingChoices")); stringTokenizer + .hasMoreTokens();) + { + encodings.add(stringTokenizer.nextToken()); + } + } + return encodings; + } + } + + /** + * The framework calls this to create the contents of the wizard. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void addPages() + { + // Create a page, set the title, and the initial model file name. + // + newFileCreationPage = new EvolutionModelWizardNewFileCreationPage("Whatever", selection); + newFileCreationPage.setTitle(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionModelWizard_label")); + newFileCreationPage.setDescription(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionModelWizard_description")); + newFileCreationPage.setFileName(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameDefaultBase") + "." + FILE_EXTENSIONS.get(0)); + addPage(newFileCreationPage); + + // Try and get the resource selection to determine a current directory for the file dialog. + // + if (selection != null && !selection.isEmpty()) + { + // Get the resource... + // + Object selectedElement = selection.iterator().next(); + if (selectedElement instanceof IResource) + { + // Get the resource parent, if its a file. + // + IResource selectedResource = (IResource)selectedElement; + if (selectedResource.getType() == IResource.FILE) + { + selectedResource = selectedResource.getParent(); + } + + // This gives us a directory... + // + if (selectedResource instanceof IFolder || selectedResource instanceof IProject) + { + // Set this for the container. + // + newFileCreationPage.setContainerFullPath(selectedResource.getFullPath()); + + // Make up a unique new name here. + // + String defaultModelBaseFilename = EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionEditorFilenameDefaultBase"); + String defaultModelFilenameExtension = FILE_EXTENSIONS.get(0); + String modelFilename = defaultModelBaseFilename + "." + defaultModelFilenameExtension; + for (int i = 1; ((IContainer)selectedResource).findMember(modelFilename) != null; ++i) + { + modelFilename = defaultModelBaseFilename + i + "." + defaultModelFilenameExtension; + } + newFileCreationPage.setFileName(modelFilename); + } + } + } + initialObjectCreationPage = new EvolutionModelWizardInitialObjectCreationPage("Whatever2"); + initialObjectCreationPage.setTitle(EvolutionEditorPlugin.INSTANCE.getString("_UI_EvolutionModelWizard_label")); + initialObjectCreationPage.setDescription(EvolutionEditorPlugin.INSTANCE.getString("_UI_Wizard_initial_object_description")); + addPage(initialObjectCreationPage); + } + + /** + * Get the file from the page. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public IFile getModelFile() + { + return newFileCreationPage.getModelFile(); + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolution.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolution.java new file mode 100644 index 0000000000..91cbd8a227 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolution.java @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.util.DiagnosticType; + +import org.eclipse.emf.common.util.Diagnostic; + +import org.eclipse.swt.graphics.Image; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public abstract class BasicDiagnosticResolution extends DiagnosticResolution implements DiagnosticResolutionRelevance +{ + private final Image image; + + private final String text; + + private final String description; + + private final boolean multi; + + public BasicDiagnosticResolution(Image image, String text, String description, boolean multi) + { + this.image = image; + this.text = text; + this.description = description; + this.multi = multi; + } + + @Override + public Image getImage() + { + return image; + } + + @Override + public String getText() + { + return text; + } + + @Override + public String getDescription() + { + return description; + } + + public boolean isMulti() + { + return multi; + } + + @Override + public Diagnostic[] findOtherDiagnostics(Diagnostic[] diagnostics) + { + if (multi && diagnostics != null && diagnostics.length != 0) + { + List<Diagnostic> result = new ArrayList<Diagnostic>(); + for (int i = 0; i < diagnostics.length; i++) + { + Diagnostic diagnostic = diagnostics[i]; + if (isCompatibleDiagnostic(diagnostic)) + { + result.add(diagnostic); + } + } + + return result.toArray(new Diagnostic[result.size()]); + } + + return super.findOtherDiagnostics(diagnostics); + } + + protected boolean isCompatibleDiagnostic(Diagnostic diagnostic) + { + return false; + } + + public int getRelevanceForResolution() + { + return 0; + } + + @Override + public abstract void run(Diagnostic diagnostic); + + /** + * @author Eike Stepper + */ + public static abstract class TypedDiagnosticResolution extends BasicDiagnosticResolution + { + private final DiagnosticType type; + + public TypedDiagnosticResolution(Image image, String text, String description, boolean multi, String source, int code) + { + super(image, text, description, multi); + type = new DiagnosticType(source, code); + } + + public DiagnosticType getType() + { + return type; + } + + protected DiagnosticType[] getCompatibleTypes() + { + return new DiagnosticType[] { type }; + } + + @Override + protected boolean isCompatibleDiagnostic(Diagnostic diagnostic) + { + for (int i = 0; i < getCompatibleTypes().length; i++) + { + DiagnosticType type = getCompatibleTypes()[i]; + if (type.appliesTo(diagnostic)) + { + return true; + } + } + + return super.isCompatibleDiagnostic(diagnostic); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolutionGenerator.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolutionGenerator.java new file mode 100644 index 0000000000..60a5bc7421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/BasicDiagnosticResolutionGenerator.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorPlugin; + +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * @author Eike Stepper + */ +public abstract class BasicDiagnosticResolutionGenerator implements DiagnosticResolution.Generator +{ + protected ResourceLocator getResourceLocator() + { + return EvolutionEditorPlugin.INSTANCE; + } + + protected String getString(String key, Object... substitutions) + { + return getString(getResourceLocator(), key, substitutions); + } + + private String getString(ResourceLocator resourceLocator, String key, Object[] substitutions) + { + return substitutions == null || substitutions.length == 0 ? resourceLocator.getString(key) : resourceLocator.getString(key, substitutions); + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DefaultDiagnosticResolutionGenerator.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DefaultDiagnosticResolutionGenerator.java new file mode 100644 index 0000000000..75fd4aa4e5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DefaultDiagnosticResolutionGenerator.java @@ -0,0 +1,403 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.impl.EvolutionImpl; +import org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.DiagnosticResolution.Generator; +import org.eclipse.emf.cdo.evolution.util.DiagnosticID; +import org.eclipse.emf.cdo.evolution.util.DiagnosticType; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; +import org.eclipse.emf.cdo.evolution.util.EvolutionValidator; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; + +import org.eclipse.net4j.util.factory.ProductCreationException; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.dialogs.FilteredResourcesSelectionDialog; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * @author Eike Stepper + */ +public class DefaultDiagnosticResolutionGenerator extends BasicDiagnosticResolutionGenerator +{ + public DefaultDiagnosticResolutionGenerator() + { + } + + public void getResolutions(Diagnostic diagnostic, final Context context) + { + if (EvolutionValidator.DIAGNOSTIC_SOURCE.equals(diagnostic.getSource())) + { + int code = diagnostic.getCode(); + switch (code) + { + case EvolutionValidator.CODE_NO_MODEL: + handleNoModel(diagnostic, context); + break; + + case EvolutionValidator.CODE_NO_URI: + handleNoURI(diagnostic, context); + break; + + case EvolutionValidator.CODE_NO_RESOURCE_SET: + break; + + case EvolutionValidator.CODE_RESOURCE_NOT_FOUND: + break; + + case EvolutionValidator.CODE_LOAD_PROBLEM: + break; + + case EvolutionValidator.CODE_CONTENT_PROBLEM: + break; + + case EvolutionValidator.CODE_PACKAGE_MISSING: + handlePackageMissing(diagnostic, context); + break; + + case EvolutionValidator.CODE_PACKAGE_NOT_UNIQUE: + break; + + case EvolutionValidator.CODE_NSURI_NOT_UNIQUE: + break; + + case EvolutionValidator.CODE_NSURI_NOT_CHANGED: + handleNSURINotChanged(diagnostic, context); + break; + + case EvolutionValidator.CODE_ID_ANNOTATION_MISSING: + case EvolutionValidator.CODE_ID_WITHOUT_VALUE: + handleNoID(diagnostic, context); + break; + + case EvolutionValidator.CODE_ID_NOT_UNIQUE: + handleIDNotUnique(diagnostic, context); + break; + + case EvolutionValidator.CODE_FEATURE_PATH_UNKNOWN: + handleFeaturePathUnknown(diagnostic, context); + break; + + case EvolutionValidator.CODE_RELEASE: + handleRelease(diagnostic, context); + break; + } + } + } + + protected void handleNoModel(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_SelectModelsFromWorkspace"), null, false, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Shell shell = context.getEditor().getSite().getShell(); + + FilteredResourcesSelectionDialog dialog = new FilteredResourcesSelectionDialog(shell, true, ResourcesPlugin.getWorkspace().getRoot(), IResource.FILE); + dialog.setInitialPattern("*.ecore"); + dialog.open(); + + Object[] result = dialog.getResult(); + if (result == null || result.length == 0) + { + return; + } + + Evolution evolution = (Evolution)diagnostic.getData().get(0); + for (Object object : result) + { + if (object instanceof IFile) + { + IFile file = (IFile)object; + + Model model = EvolutionFactory.eINSTANCE.createModel(URI.createPlatformResourceURI(file.getFullPath().toString(), true)); + evolution.getModels().add(model); + } + } + } + }); + } + + protected void handleNoURI(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_SelectModelFromWorkspace"), null, false, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Shell shell = context.getEditor().getSite().getShell(); + + FilteredResourcesSelectionDialog dialog = new FilteredResourcesSelectionDialog(shell, false, ResourcesPlugin.getWorkspace().getRoot(), IResource.FILE); + dialog.setInitialPattern("*.ecore"); + dialog.open(); + + Object[] result = dialog.getResult(); + if (result == null || result.length == 0 || !(result[0] instanceof IFile)) + { + return; + } + + IFile file = (IFile)result[0]; + Model model = (Model)diagnostic.getData().get(0); + model.setURI(URI.createPlatformResourceURI(file.getFullPath().toString(), true)); + } + }); + } + + protected void handlePackageMissing(Diagnostic diagnostic, final Context context) + { + final List<?> data = diagnostic.getData(); + + Resource resource = ((EPackage)data.get(2)).eResource(); + if (resource != null) + { + final URI uri = resource.getURI(); + if (uri != null) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_PackageMissing", uri), null, true, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Model model = EvolutionFactory.eINSTANCE.createModel(uri); + + Evolution evolution = (Evolution)data.get(0); + evolution.getModels().add(model); + } + }); + } + } + } + + protected void handleNSURINotChanged(Diagnostic diagnostic, Context context) + { + Evolution evolution = (Evolution)diagnostic.getData().get(3); + final int nextVersion = evolution.getNextReleaseVersion(); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_SetVersionIntoNamespace", nextVersion), null, true, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + EPackage ePackage = (EPackage)diagnostic.getData().get(0); + String nsURI = ePackage.getNsURI(); + if (!nsURI.endsWith("/")) + { + nsURI += "/"; + } + + Pattern pattern = Pattern.compile("/v[0-9]+/"); + Matcher matcher = pattern.matcher(nsURI); + if (matcher.find()) + { + int start = matcher.start(); + int end = matcher.end(); + String prefix = nsURI.substring(0, start); + String suffix = nsURI.substring(end, nsURI.length() - 1); + + nsURI = prefix + "/v" + nextVersion + "/" + suffix; + } + else + { + nsURI += "v" + nextVersion; + } + + ePackage.setNsURI(nsURI); + } + }); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_DisableUniqueNamespaceEnforcement"), null, false, diagnostic.getCode()) + { + @Override + public int getRelevanceForResolution() + { + return -100; + } + + @Override + public void run(Diagnostic diagnostic) + { + Evolution evolution = (Evolution)diagnostic.getData().get(3); + evolution.setUniqueNamespaces(false); + } + }); + } + + protected void handleNoID(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_AssignID"), null, true, diagnostic.getCode()) + { + @Override + protected DiagnosticType[] getCompatibleTypes() + { + return new DiagnosticType[] { getType(), new DiagnosticType(EvolutionValidator.DIAGNOSTIC_SOURCE, EvolutionValidator.CODE_ID_WITHOUT_VALUE) }; + } + + @Override + public void run(Diagnostic diagnostic) + { + EModelElement modelElement = (EModelElement)diagnostic.getData().get(0); + IDAnnotation.ensureValue(modelElement); + } + }); + } + + protected void handleIDNotUnique(Diagnostic diagnostic, final Context context) + { + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_RememberID"), null, true, diagnostic.getCode()) + { + @Override + public int getRelevanceForResolution() + { + return 100; + } + + @Override + public void run(Diagnostic diagnostic) + { + EModelElement modelElement = (EModelElement)diagnostic.getData().get(0); + String oldValue = IDAnnotation.getValue(modelElement); + IDAnnotation.setOldValue(modelElement, oldValue); + IDAnnotation.setValue(modelElement, null); + IDAnnotation.ensureValue(modelElement); + } + }); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_ReplaceID"), null, true, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + EModelElement modelElement = (EModelElement)diagnostic.getData().get(0); + IDAnnotation.setValue(modelElement, null); + IDAnnotation.ensureValue(modelElement); + } + }); + } + + protected void handleFeaturePathUnknown(Diagnostic diagnostic, Context context) + { + final ElementChange elementChange = (ElementChange)diagnostic.getData().get(0); + final ChangeKind kind = elementChange.getKind(); + + context.add(new EvolutionDiagnosticResolution(null, + getString("_QF_SpecifyFeaturePath", kind.getName().toLowerCase(), ElementHandler.getLabel(elementChange.getNewElement())), null, false, + diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + FeaturePathMigration migration = EvolutionFactory.eINSTANCE.createFeaturePathMigration(); + migration.setDiagnosticID(DiagnosticID.get(diagnostic).getValue()); + migration.setFromClass(((EStructuralFeature)elementChange.getOldElement()).getEContainingClass()); + migration.setToClass(((EStructuralFeature)elementChange.getNewElement()).getEContainingClass()); + + Evolution evolution = (Evolution)elementChange.getNewModelSet(); + evolution.getMigrations().add(migration); + } + }); + } + + protected void handleRelease(Diagnostic diagnostic, final Context context) + { + final EvolutionImpl evolution = (EvolutionImpl)diagnostic.getData().get(0); + final int nextVersion = evolution.getNextReleaseVersion(); + + context.add(new EvolutionDiagnosticResolution(null, getString("_QF_CreateRelease", nextVersion), null, false, diagnostic.getCode()) + { + @Override + public void run(Diagnostic diagnostic) + { + Release release = EvolutionFactory.eINSTANCE.createRelease(); + release.setDate(new Date()); + release.setVersion(nextVersion); + + evolution.getReleases().add(release); + + Collection<EPackage> rootPackages = EcoreUtil.copyAll(evolution.getRootPackages()); + release.getRootPackages().addAll(rootPackages); + + for (EPackage rootPackage : evolution.getRootPackages()) + { + ElementHandler.execute(rootPackage, new ElementRunnable() + { + public void run(EModelElement modelElement) + { + IDAnnotation.setOldValue(modelElement, null); + } + }); + } + + ModelSetChangeImpl change = (ModelSetChangeImpl)evolution.getChange(); + if (change != null) + { + change.reset(); + evolution.setChange(null); + } + } + }); + } + + /** + * @author Eike Stepper + */ + protected static abstract class EvolutionDiagnosticResolution extends BasicDiagnosticResolution.TypedDiagnosticResolution + { + protected EvolutionDiagnosticResolution(Image image, String text, String description, boolean multi, int code) + { + super(image, text, description, multi, EvolutionValidator.DIAGNOSTIC_SOURCE, code); + } + } + + /** + * @author Eike Stepper + */ + public static class Factory extends DiagnosticResolution.Generator.Factory + { + public Factory() + { + } + + @Override + public Generator create(String description) throws ProductCreationException + { + return new DefaultDiagnosticResolutionGenerator(); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java new file mode 100644 index 0000000000..603b7467e4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolution.java @@ -0,0 +1,120 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditor; +import org.eclipse.emf.cdo.evolution.presentation.quickfix.DiagnosticResolution.Generator.Context; + +import org.eclipse.net4j.util.container.IPluginContainer; +import org.eclipse.net4j.util.factory.ProductCreationException; + +import org.eclipse.emf.common.util.Diagnostic; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.swt.graphics.Image; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author Eike Stepper + */ +public abstract class DiagnosticResolution +{ + public static final Diagnostic[] NO_DIAGNOSTICS = {}; + + public abstract Image getImage(); + + public abstract String getText(); + + public abstract String getDescription(); + + public abstract void run(Diagnostic diagnostic); + + public void run(Diagnostic[] diagnostics, IProgressMonitor monitor) + { + for (Diagnostic diagnostic : diagnostics) + { + monitor.subTask(diagnostic.getMessage()); + run(diagnostic); + } + } + + public Diagnostic[] findOtherDiagnostics(Diagnostic[] diagnostics) + { + return NO_DIAGNOSTICS; + } + + public static DiagnosticResolution[] getResolutions(Diagnostic diagnostic, final EvolutionEditor editor) + { + final List<DiagnosticResolution> result = new ArrayList<DiagnosticResolution>(); + Context context = new Generator.Context() + { + public EvolutionEditor getEditor() + { + return editor; + } + + public void add(DiagnosticResolution resolution) + { + result.add(resolution); + } + }; + + for (String factoryType : IPluginContainer.INSTANCE.getFactoryTypes(Generator.Factory.PRODUCT_GROUP)) + { + Generator generator = (Generator)IPluginContainer.INSTANCE.getElement(Generator.Factory.PRODUCT_GROUP, factoryType, null); + generator.getResolutions(diagnostic, context); + } + + return result.toArray(new DiagnosticResolution[result.size()]); + } + + /** + * @author Eike Stepper + */ + public interface Generator + { + public void getResolutions(Diagnostic diagnostic, Context context); + + /** + * @author Eike Stepper + */ + public interface Context + { + public EvolutionEditor getEditor(); + + public void add(DiagnosticResolution resolution); + } + + /** + * @author Eike Stepper + */ + public static abstract class Factory extends org.eclipse.net4j.util.factory.Factory + { + public static final String PRODUCT_GROUP = "org.eclipse.emf.cdo.evolution.diagnosticResolutionGenerators"; + + public static final String DEFAULT_TYPE = "default"; + + public Factory() + { + this(DEFAULT_TYPE); + } + + public Factory(String type) + { + super(PRODUCT_GROUP, type); + } + + public abstract Generator create(String description) throws ProductCreationException; + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolutionRelevance.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolutionRelevance.java new file mode 100644 index 0000000000..88f67d482a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/DiagnosticResolutionRelevance.java @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +/** + * @author Eike Stepper + */ +public interface DiagnosticResolutionRelevance +{ + public int getRelevanceForResolution(); +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixPage.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixPage.java new file mode 100644 index 0000000000..fb48612ff7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixPage.java @@ -0,0 +1,408 @@ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditor; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.edit.command.ChangeCommand; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.CheckStateChangedEvent; +import org.eclipse.jface.viewers.CheckboxTableViewer; +import org.eclipse.jface.viewers.ICheckStateListener; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredContentProvider; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.viewers.TableViewer; +import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerComparator; +import org.eclipse.jface.wizard.WizardPage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.events.SelectionAdapter; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.layout.FormAttachment; +import org.eclipse.swt.layout.FormData; +import org.eclipse.swt.layout.FormLayout; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Table; +import org.eclipse.ui.statushandlers.StatusManager; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.Map; + +/** + * QuickFixPage is a page for the quick fixes of a marker. + * + * @since 3.4 + * + */ +public class QuickFixPage extends WizardPage +{ + private Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap; + + private TableViewer resolutionsViewer; + + private CheckboxTableViewer diagnosticsViewer; + + private final Diagnostic[] selectedDiagnostics; + + private AdapterFactoryEditingDomain editingDomain; + + public QuickFixPage(String problemDescription, Diagnostic[] selectedDiagnostics, Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap, + AdapterFactoryEditingDomain editingDomain) + { + super("QuickFixPage"); + this.selectedDiagnostics = selectedDiagnostics; + this.resolutionsMap = resolutionsMap; + this.editingDomain = editingDomain; + + setTitle("Quick Fix"); + setMessage(problemDescription); + } + + public void createControl(Composite parent) + { + initializeDialogUnits(parent); + + // Create a new composite as there is the title bar separator to deal with + Composite control = new Composite(parent, SWT.NONE); + control.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + setControl(control); + + // PlatformUI.getWorkbench().getHelpSystem().setHelp(control, IWorkbenchHelpContextIds.PROBLEMS_VIEW); + + FormLayout layout = new FormLayout(); + layout.marginHeight = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_MARGIN); + layout.marginWidth = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_MARGIN); + layout.spacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + control.setLayout(layout); + + Label resolutionsLabel = new Label(control, SWT.NONE); + resolutionsLabel.setText("&Select a fix:"); + resolutionsLabel.setLayoutData(new FormData()); + + createResolutionsList(control); + + FormData listData = new FormData(); + listData.top = new FormAttachment(resolutionsLabel, 0); + listData.left = new FormAttachment(0); + listData.right = new FormAttachment(100, 0); + listData.height = convertHeightInCharsToPixels(10); + resolutionsViewer.getControl().setLayoutData(listData); + + Label title = new Label(control, SWT.NONE); + title.setText("&Problems:"); + FormData labelData = new FormData(); + labelData.top = new FormAttachment(resolutionsViewer.getControl(), 0); + labelData.left = new FormAttachment(0); + title.setLayoutData(labelData); + + createDiagnosticsViewer(control); + + Composite buttons = createTableButtons(control); + FormData buttonData = new FormData(); + buttonData.top = new FormAttachment(title, 0); + buttonData.right = new FormAttachment(100); + buttonData.height = convertHeightInCharsToPixels(10); + buttons.setLayoutData(buttonData); + + FormData tableData = new FormData(); + tableData.top = new FormAttachment(buttons, 0, SWT.TOP); + tableData.left = new FormAttachment(0); + tableData.bottom = new FormAttachment(100); + tableData.right = new FormAttachment(buttons, 0); + tableData.height = convertHeightInCharsToPixels(10); + diagnosticsViewer.getControl().setLayoutData(tableData); + + Dialog.applyDialogFont(control); + + resolutionsViewer.setSelection(new StructuredSelection(resolutionsViewer.getElementAt(0))); + + diagnosticsViewer.setCheckedElements(selectedDiagnostics); + + setPageComplete(diagnosticsViewer.getCheckedElements().length > 0); + } + + private Composite createTableButtons(Composite control) + { + Composite buttonComposite = new Composite(control, SWT.NONE); + GridLayout layout = new GridLayout(); + layout.marginWidth = 0; + layout.marginHeight = 0; + layout.horizontalSpacing = convertHorizontalDLUsToPixels(IDialogConstants.HORIZONTAL_SPACING); + layout.verticalSpacing = convertVerticalDLUsToPixels(IDialogConstants.VERTICAL_SPACING); + buttonComposite.setLayout(layout); + + Button selectAll = new Button(buttonComposite, SWT.PUSH); + selectAll.setText("Select &All"); + selectAll.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false)); + selectAll.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent arg0) + { + diagnosticsViewer.setAllChecked(true); + setPageComplete(!resolutionsViewer.getStructuredSelection().isEmpty()); + } + }); + + Button deselectAll = new Button(buttonComposite, SWT.PUSH); + deselectAll.setText("&Deselect All"); + deselectAll.setLayoutData(new GridData(SWT.FILL, SWT.NONE, false, false)); + deselectAll.addSelectionListener(new SelectionAdapter() + { + @Override + public void widgetSelected(SelectionEvent arg0) + { + diagnosticsViewer.setAllChecked(false); + setPageComplete(false); + } + }); + + return buttonComposite; + } + + private void createResolutionsList(Composite control) + { + resolutionsViewer = new TableViewer(control, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL); + resolutionsViewer.setContentProvider(new IStructuredContentProvider() + { + public Object[] getElements(Object inputElement) + { + return resolutionsMap.keySet().toArray(); + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + } + + public void dispose() + { + } + }); + + resolutionsViewer.setLabelProvider(new LabelProvider() + { + @Override + public String getText(Object element) + { + return ((DiagnosticResolution)element).getText(); + } + + @Override + public Image getImage(Object element) + { + return ((DiagnosticResolution)element).getImage(); + } + }); + + resolutionsViewer.setComparator(new ViewerComparator() + { + /** + * This comparator compares the resolutions based on the relevance of the + * resolutions. Any resolution that doesn't implement DiagnosticResolutionRelevance + * will be deemed to have relevance 0 (default value for relevance). If both + * resolutions have the same relevance, then marker resolution label string will + * be used for comparing the resolutions. + * + * @see DiagnosticResolutionRelevance#getRelevanceForResolution() + */ + @Override + public int compare(Viewer viewer, Object e1, Object e2) + { + int relevanceMarker1 = e1 instanceof DiagnosticResolutionRelevance ? ((DiagnosticResolutionRelevance)e1).getRelevanceForResolution() : 0; + int relevanceMarker2 = e2 instanceof DiagnosticResolutionRelevance ? ((DiagnosticResolutionRelevance)e2).getRelevanceForResolution() : 0; + if (relevanceMarker1 != relevanceMarker2) + { + return Integer.valueOf(relevanceMarker2).compareTo(Integer.valueOf(relevanceMarker1)); + } + + return ((DiagnosticResolution)e1).getText().compareTo(((DiagnosticResolution)e2).getText()); + } + }); + + resolutionsViewer.addSelectionChangedListener(new ISelectionChangedListener() + { + public void selectionChanged(SelectionChangedEvent event) + { + diagnosticsViewer.refresh(); + setPageComplete(diagnosticsViewer.getCheckedElements().length > 0); + } + }); + + resolutionsViewer.setInput(this); + } + + private void createDiagnosticsViewer(Composite parent) + { + diagnosticsViewer = CheckboxTableViewer.newCheckList(parent, SWT.BORDER | SWT.V_SCROLL | SWT.SINGLE); + diagnosticsViewer.setContentProvider(new DiagnosticsContentProvider()); + diagnosticsViewer.setInput(this); + + Table table = diagnosticsViewer.getTable(); + table.setHeaderVisible(true); + table.setLinesVisible(true); + + EvolutionEditor.createDiagnosticElementColumn(diagnosticsViewer, editingDomain.getAdapterFactory()); + EvolutionEditor.createDiagnosticResourceColumn(diagnosticsViewer, editingDomain.getAdapterFactory()); + + diagnosticsViewer.addCheckStateListener(new ICheckStateListener() + { + public void checkStateChanged(CheckStateChangedEvent event) + { + if (event.getChecked() == true) + { + setPageComplete(true); + } + else + { + setPageComplete(diagnosticsViewer.getCheckedElements().length > 0); + } + } + }); + + // new OpenAndLinkWithEditorHelper(markersTable) + // { + // { + // setLinkWithEditor(false); + // } + // + // @Override + // protected void activate(ISelection selection) + // { + // open(selection, true); + // } + // + // /** Not supported*/ + // + // @Override + // protected void linkToEditor(ISelection selection) + // { + // } + // + // @Override + // protected void open(ISelection selection, boolean activate) + // { + // if (selection.isEmpty()) + // { + // return; + // } + // Diagnostic marker = (Diagnostic)((IStructuredSelection)selection).getFirstElement(); + // if (marker != null && marker.getResource() instanceof IFile) + // { + // try + // { + // IDE.openEditor(site.getPage(), marker, activate); + // } + // catch (PartInitException e) + // { + // MarkerSupportInternalUtilities.showViewError(e); + // } + // } + // } + // }; + } + + public Diagnostic getSelectedDiagnostic() + { + IStructuredSelection selection = diagnosticsViewer.getStructuredSelection(); + if (!selection.isEmpty()) + { + if (selection.size() == 1) + { + return (Diagnostic)selection.getFirstElement(); + } + } + + return null; + } + + void performFinish(IProgressMonitor monitor) + { + final DiagnosticResolution resolution = getSelectedResolution(); + if (resolution == null) + { + return; + } + + final Object[] checked = diagnosticsViewer.getCheckedElements(); + if (checked.length == 0) + { + return; + } + + try + { + getWizard().getContainer().run(false, true, new IRunnableWithProgress() + { + public void run(final IProgressMonitor monitor) throws InvocationTargetException, InterruptedException + { + final Diagnostic[] diagnostics = new Diagnostic[checked.length]; + System.arraycopy(checked, 0, diagnostics, 0, checked.length); + + ChangeCommand command = new ChangeCommand(editingDomain.getResourceSet()) + { + @Override + protected void doExecute() + { + resolution.run(diagnostics, monitor); + } + }; + + editingDomain.getCommandStack().execute(command); + } + }); + } + catch (InvocationTargetException e) + { + StatusManager.getManager().handle(QuickFixWizard.newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + } + catch (InterruptedException e) + { + StatusManager.getManager().handle(QuickFixWizard.newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + } + } + + private DiagnosticResolution getSelectedResolution() + { + return (DiagnosticResolution)resolutionsViewer.getStructuredSelection().getFirstElement(); + } + + /** + * @author Eike Stepper + */ + private final class DiagnosticsContentProvider implements IStructuredContentProvider + { + public Object[] getElements(Object inputElement) + { + DiagnosticResolution selected = getSelectedResolution(); + if (selected != null && resolutionsMap.containsKey(selected)) + { + return resolutionsMap.get(selected).toArray(); + } + + return DiagnosticResolution.NO_DIAGNOSTICS; + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) + { + } + + public void dispose() + { + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixWizard.java b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixWizard.java new file mode 100644 index 0000000000..d9a677846f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution.editor/src/org/eclipse/emf/cdo/evolution/presentation/quickfix/QuickFixWizard.java @@ -0,0 +1,115 @@ +package org.eclipse.emf.cdo.evolution.presentation.quickfix; + +import org.eclipse.emf.cdo.evolution.presentation.EvolutionEditorPlugin; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain; +import org.eclipse.emf.edit.ui.provider.ExtendedImageRegistry; + +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.wizard.IWizardPage; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.statushandlers.StatusManager; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.Map; + +/** + * The wizard for quick fixes. + */ +public class QuickFixWizard extends Wizard +{ + private Diagnostic[] selectedDiagnostics; + + private Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap; + + private String description; + + private AdapterFactoryEditingDomain editingDomain; + + public QuickFixWizard(String description, Diagnostic[] selectedDiagnostics, Map<DiagnosticResolution, Collection<Diagnostic>> resolutionsMap, + AdapterFactoryEditingDomain editingDomain) + { + this.selectedDiagnostics = selectedDiagnostics; + this.resolutionsMap = resolutionsMap; + this.description = description; + this.editingDomain = editingDomain; + + setNeedsProgressMonitor(true); + setDefaultPageImageDescriptor(ExtendedImageRegistry.INSTANCE + .getImageDescriptor(URI.createPlatformPluginURI(EvolutionEditorPlugin.PLUGIN_ID + "/icons/full/wizban/quick_fix.png", true))); + } + + @Override + public void addPages() + { + super.addPages(); + addPage(new QuickFixPage(description, selectedDiagnostics, resolutionsMap, editingDomain)); + } + + @Override + public boolean performFinish() + { + IRunnableWithProgress finishRunnable = new IRunnableWithProgress() + { + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException + { + IWizardPage[] pages = getPages(); + SubMonitor subMonitor = SubMonitor.convert(monitor, "Fixing", 10 * pages.length + 1); + subMonitor.worked(1); + for (IWizardPage page : pages) + { + // Allow for cancel event processing + getShell().getDisplay().readAndDispatch(); + QuickFixPage wizardPage = (QuickFixPage)page; + wizardPage.performFinish(subMonitor.split(10)); + } + } + }; + + try + { + getContainer().run(false, true, finishRunnable); + } + catch (InvocationTargetException e) + { + StatusManager.getManager().handle(newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + return false; + } + catch (InterruptedException e) + { + StatusManager.getManager().handle(newStatus(IStatus.ERROR, e.getLocalizedMessage(), e)); + return false; + } + + return true; + } + + public static IStatus newStatus(int severity, String message, Throwable exception) + { + String statusMessage = message; + if (message == null || message.trim().length() == 0) + { + if (exception == null) + { + throw new IllegalArgumentException(); + } + else if (exception.getMessage() == null) + { + statusMessage = exception.toString(); + } + else + { + statusMessage = exception.getMessage(); + } + } + + return new Status(severity, EvolutionEditorPlugin.PLUGIN_ID, severity, statusMessage, exception); + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/.classpath b/plugins/org.eclipse.emf.cdo.evolution/.classpath new file mode 100644 index 0000000000..64c5e31b7a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.classpath @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<classpath> + <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/> + <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/> + <classpathentry kind="src" path="src"/> + <classpathentry kind="output" path="bin"/> +</classpath> diff --git a/plugins/org.eclipse.emf.cdo.evolution/.options b/plugins/org.eclipse.emf.cdo.evolution/.options new file mode 100644 index 0000000000..1ce0cff2a9 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.options @@ -0,0 +1,3 @@ +# Debugging and tracing options + +org.eclipse.emf.cdo.evolution/debug = true diff --git a/plugins/org.eclipse.emf.cdo.evolution/.project b/plugins/org.eclipse.emf.cdo.evolution/.project new file mode 100644 index 0000000000..ab2b2d65c6 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.project @@ -0,0 +1,58 @@ +<?xml version="1.0" encoding="UTF-8"?> +<projectDescription> + <name>org.eclipse.emf.cdo.evolution</name> + <comment></comment> + <projects> + </projects> + <buildSpec> + <buildCommand> + <name>org.eclipse.jdt.core.javabuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.ManifestBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.pde.api.tools.apiAnalysisBuilder</name> + <arguments> + </arguments> + </buildCommand> + <buildCommand> + <name>org.eclipse.oomph.version.VersionBuilder</name> + <arguments> + <dictionary> + <key>check.maven.pom</key> + <value>true</value> + </dictionary> + <dictionary> + <key>ignore.lower.bound.dependency.ranges</key> + <value>true</value> + </dictionary> + <dictionary> + <key>release.path</key> + <value>/org.eclipse.emf.cdo.releng/versions/release.xml</value> + </dictionary> + </arguments> + </buildCommand> + </buildSpec> + <natures> + <nature>org.eclipse.pde.PluginNature</nature> + <nature>org.eclipse.jdt.core.javanature</nature> + <nature>org.eclipse.pde.api.tools.apiAnalysisNature</nature> + <nature>org.eclipse.oomph.version.VersionNature</nature> + </natures> + <filteredResources> + <filter> + <id>1396938000000</id> + <name></name> + <type>10</type> + <matcher> + <id>org.eclipse.ui.ide.multiFilter</id> + <arguments>1.0-projectRelativePath-matches-true-false-target</arguments> + </matcher> + </filter> + </filteredResources> +</projectDescription> diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/.api_filters b/plugins/org.eclipse.emf.cdo.evolution/.settings/.api_filters new file mode 100644 index 0000000000..ceab79999b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/.api_filters @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<component id="org.eclipse.emf.cdo.evolution" version="2"> + <resource path="src/org/eclipse/emf/cdo/evolution/Release.java" type="org.eclipse.emf.cdo.evolution.Release"> + <filter id="574619656"> + <message_arguments> + <message_argument value="CDOObject"/> + <message_argument value="Release"/> + </message_arguments> + </filter> + <filter id="574668824"> + <message_arguments> + <message_argument value="Migratable"/> + <message_argument value="Release"/> + <message_argument value="CDOObject"/> + </message_arguments> + </filter> + <filter id="574668824"> + <message_arguments> + <message_argument value="ModelSet"/> + <message_argument value="Release"/> + <message_argument value="CDOObject"/> + </message_arguments> + </filter> + </resource> +</component> diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.core.resources.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 0000000000..e9c6dcb88e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +encoding/.project=UTF-8 +encoding//model/evolution.ecore=UTF-8 diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.core.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000000..ff3d8e623b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,412 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.builder.cleanOutputFolder=clean +org.eclipse.jdt.core.builder.duplicateResourceTask=warning +org.eclipse.jdt.core.builder.invalidClasspath=abort +org.eclipse.jdt.core.builder.recreateModifiedClassFileInOutputFolder=ignore +org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.launch,*.ucls,doc-files/,package.html,package-info.java +org.eclipse.jdt.core.circularClasspath=error +org.eclipse.jdt.core.classpath.exclusionPatterns=enabled +org.eclipse.jdt.core.classpath.multipleOutputLocations=enabled +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.5 +org.eclipse.jdt.core.compiler.debug.lineNumber=generate +org.eclipse.jdt.core.compiler.debug.localVariable=generate +org.eclipse.jdt.core.compiler.debug.sourceFile=generate +org.eclipse.jdt.core.compiler.doc.comment.support=enabled +org.eclipse.jdt.core.compiler.maxProblemPerUnit=100 +org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.autoboxing=ignore +org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning +org.eclipse.jdt.core.compiler.problem.deadCode=warning +org.eclipse.jdt.core.compiler.problem.deprecation=warning +org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled +org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=enabled +org.eclipse.jdt.core.compiler.problem.discouragedReference=warning +org.eclipse.jdt.core.compiler.problem.emptyStatement=warning +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=warning +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore +org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning +org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning +org.eclipse.jdt.core.compiler.problem.forbiddenReference=error +org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning +org.eclipse.jdt.core.compiler.problem.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore +org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore +org.eclipse.jdt.core.compiler.problem.invalidJavadoc=warning +org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=enabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled +org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore +org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning +org.eclipse.jdt.core.compiler.problem.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning +org.eclipse.jdt.core.compiler.problem.missingJavadocComments=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag +org.eclipse.jdt.core.compiler.problem.missingJavadocTags=ignore +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled +org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=public +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=warning +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=warning +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=warning +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled +org.eclipse.jdt.core.compiler.problem.unusedImport=warning +org.eclipse.jdt.core.compiler.problem.unusedLabel=warning +org.eclipse.jdt.core.compiler.problem.unusedLocal=warning +org.eclipse.jdt.core.compiler.problem.unusedObjectAllocation=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled +org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled +org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.taskCaseSensitive=enabled +org.eclipse.jdt.core.compiler.taskPriorities=NORMAL,HIGH,HIGH,LOW,LOW,LOW,LOW,LOW +org.eclipse.jdt.core.compiler.taskTags=TODO,FIXME,XXX,PERF,MEM,POLISH,@generated NOT,@ADDED +org.eclipse.jdt.core.formatter.align_type_members_on_columns=false +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_assignment=0 +org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0 +org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80 +org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16 +org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16 +org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16 +org.eclipse.jdt.core.formatter.blank_lines_after_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_after_package=1 +org.eclipse.jdt.core.formatter.blank_lines_before_field=1 +org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0 +org.eclipse.jdt.core.formatter.blank_lines_before_imports=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=true +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true +org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true +org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_empty_lines=false +org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true +org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true +org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false +org.eclipse.jdt.core.formatter.indentation.size=2 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert +org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert +org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert +org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert +org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert +org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert +org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert +org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert +org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert +org.eclipse.jdt.core.formatter.join_lines_in_comments=true +org.eclipse.jdt.core.formatter.join_wrapped_lines=true +org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.lineSplit=160 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false +org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0 +org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1 +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.incompatibleJDKLevel=ignore +org.eclipse.jdt.core.incompleteClasspath=error diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.launching.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.launching.prefs new file mode 100644 index 0000000000..556ed07a3c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.launching.prefs @@ -0,0 +1,3 @@ +#Fri Sep 02 05:38:34 CEST 2011 +eclipse.preferences.version=1 +org.eclipse.jdt.launching.PREF_STRICTLY_COMPATIBLE_JRE_NOT_AVAILABLE=ignore diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000000..222aec0421 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,119 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=true +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=true +cleanup.format_source_code=true +cleanup.format_source_code_changes_only=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=true +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=false +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_trailing_whitespaces=true +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_blocks=true +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_parentheses_in_expressions=true +cleanup.use_this_for_non_static_field_access=true +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=true +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=_EMFT +cleanup_settings_version=2 +eclipse.preferences.version=1 +editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true +formatter_profile=_EMFT +formatter_settings_version=12 +org.eclipse.jdt.ui.exception.name=ex +org.eclipse.jdt.ui.gettersetter.use.is=true +org.eclipse.jdt.ui.ignorelowercasenames=true +org.eclipse.jdt.ui.importorder=org.eclipse.emf.cdo;org.eclipse.emf.internal.cdo;org.eclipse.net4j;org.eclipse.internal.net4j;org.eclipse.emf;org.eclipse;com;org;javax;java; +org.eclipse.jdt.ui.javadoc=true +org.eclipse.jdt.ui.keywordthis=false +org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.overrideannotation=true +org.eclipse.jdt.ui.staticondemandthreshold=99 +org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="false" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment"/><template autoinsert\="false" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment"/><template autoinsert\="false" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment"/><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">/*\r\n * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others.\r\n * All rights reserved. This program and the accompanying materials\r\n * are made available under the terms of the Eclipse Public License v1.0\r\n * which accompanies this distribution, and is available at\r\n * http\://www.eclipse.org/legal/epl-v10.html\r\n * \r\n * Contributors\:\r\n * Eike Stepper - initial API and implementation\r\n */</template><template autoinsert\="false" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author Eike Stepper\r\n */</template><template autoinsert\="false" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment"/><template autoinsert\="false" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment"/><template autoinsert\="false" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment"/><template autoinsert\="false" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment"/><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="false" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">${exception_var}.printStackTrace();</template><template autoinsert\="false" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">${body_statement}</template><template autoinsert\="false" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates> +sp_cleanup.add_default_serial_version_id=true +sp_cleanup.add_generated_serial_version_id=false +sp_cleanup.add_missing_annotations=true +sp_cleanup.add_missing_deprecated_annotations=true +sp_cleanup.add_missing_methods=false +sp_cleanup.add_missing_nls_tags=false +sp_cleanup.add_missing_override_annotations=true +sp_cleanup.add_missing_override_annotations_interface_methods=false +sp_cleanup.add_serial_version_id=false +sp_cleanup.always_use_blocks=true +sp_cleanup.always_use_parentheses_in_expressions=false +sp_cleanup.always_use_this_for_non_static_field_access=false +sp_cleanup.always_use_this_for_non_static_method_access=false +sp_cleanup.convert_to_enhanced_for_loop=false +sp_cleanup.correct_indentation=false +sp_cleanup.format_source_code=true +sp_cleanup.format_source_code_changes_only=false +sp_cleanup.make_local_variable_final=false +sp_cleanup.make_parameters_final=false +sp_cleanup.make_private_fields_final=true +sp_cleanup.make_type_abstract_if_missing_method=false +sp_cleanup.make_variable_declarations_final=false +sp_cleanup.never_use_blocks=false +sp_cleanup.never_use_parentheses_in_expressions=true +sp_cleanup.on_save_use_additional_actions=true +sp_cleanup.organize_imports=true +sp_cleanup.qualify_static_field_accesses_with_declaring_class=false +sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +sp_cleanup.qualify_static_member_accesses_with_declaring_class=false +sp_cleanup.qualify_static_method_accesses_with_declaring_class=false +sp_cleanup.remove_private_constructors=true +sp_cleanup.remove_trailing_whitespaces=true +sp_cleanup.remove_trailing_whitespaces_all=true +sp_cleanup.remove_trailing_whitespaces_ignore_empty=false +sp_cleanup.remove_unnecessary_casts=true +sp_cleanup.remove_unnecessary_nls_tags=true +sp_cleanup.remove_unused_imports=true +sp_cleanup.remove_unused_local_variables=false +sp_cleanup.remove_unused_private_fields=true +sp_cleanup.remove_unused_private_members=false +sp_cleanup.remove_unused_private_methods=true +sp_cleanup.remove_unused_private_types=true +sp_cleanup.sort_members=false +sp_cleanup.sort_members_all=false +sp_cleanup.use_blocks=true +sp_cleanup.use_blocks_only_for_return_and_throw=false +sp_cleanup.use_parentheses_in_expressions=true +sp_cleanup.use_this_for_non_static_field_access=true +sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true +sp_cleanup.use_this_for_non_static_method_access=true +sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.ltk.core.refactoring.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.ltk.core.refactoring.prefs new file mode 100644 index 0000000000..864e30fe5d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.ltk.core.refactoring.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.tasks.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.tasks.ui.prefs new file mode 100644 index 0000000000..b050639a54 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.tasks.ui.prefs @@ -0,0 +1,4 @@ +#Thu Feb 04 09:44:24 CET 2010 +eclipse.preferences.version=1 +project.repository.kind=bugzilla +project.repository.url=https\://bugs.eclipse.org/bugs diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.team.ui.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.team.ui.prefs new file mode 100644 index 0000000000..97c11e6725 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.mylyn.team.ui.prefs @@ -0,0 +1,3 @@ +#Thu Feb 04 09:44:24 CET 2010 +commit.comment.template=[${task.id}] ${task.description}\r\n\r\n${task.url} +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.api.tools.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.api.tools.prefs new file mode 100644 index 0000000000..0c17d59e45 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.api.tools.prefs @@ -0,0 +1,95 @@ +#Thu Feb 04 09:44:24 CET 2010 +ANNOTATION_ELEMENT_TYPE_ADDED_METHOD_WITHOUT_DEFAULT_VALUE=Error +ANNOTATION_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_FIELD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_METHOD=Error +ANNOTATION_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_API_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_API_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_REEXPORTED_TYPE=Error +API_COMPONENT_ELEMENT_TYPE_REMOVED_TYPE=Error +CLASS_ELEMENT_TYPE_ADDED_METHOD=Error +CLASS_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +CLASS_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CLASS_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +CLASS_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +CLASS_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +CLASS_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +CLASS_ELEMENT_TYPE_REMOVED_CONSTRUCTOR=Error +CLASS_ELEMENT_TYPE_REMOVED_FIELD=Error +CLASS_ELEMENT_TYPE_REMOVED_METHOD=Error +CLASS_ELEMENT_TYPE_REMOVED_SUPERCLASS=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +CLASS_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +CONSTRUCTOR_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +CONSTRUCTOR_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +ENUM_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +ENUM_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +ENUM_ELEMENT_TYPE_REMOVED_ENUM_CONSTANT=Error +ENUM_ELEMENT_TYPE_REMOVED_FIELD=Error +ENUM_ELEMENT_TYPE_REMOVED_METHOD=Error +ENUM_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +FIELD_ELEMENT_TYPE_ADDED_VALUE=Error +FIELD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +FIELD_ELEMENT_TYPE_CHANGED_FINAL_TO_NON_FINAL_STATIC_CONSTANT=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +FIELD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +FIELD_ELEMENT_TYPE_CHANGED_TYPE=Error +FIELD_ELEMENT_TYPE_CHANGED_VALUE=Error +FIELD_ELEMENT_TYPE_REMOVED_TYPE_ARGUMENT=Error +FIELD_ELEMENT_TYPE_REMOVED_VALUE=Error +ILLEGAL_EXTEND=Warning +ILLEGAL_IMPLEMENT=Warning +ILLEGAL_INSTANTIATE=Warning +ILLEGAL_OVERRIDE=Warning +ILLEGAL_REFERENCE=Warning +INTERFACE_ELEMENT_TYPE_ADDED_FIELD=Error +INTERFACE_ELEMENT_TYPE_ADDED_METHOD=Error +INTERFACE_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +INTERFACE_ELEMENT_TYPE_ADDED_SUPER_INTERFACE_WITH_METHODS=Error +INTERFACE_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +INTERFACE_ELEMENT_TYPE_CHANGED_CONTRACTED_SUPERINTERFACES_SET=Error +INTERFACE_ELEMENT_TYPE_CHANGED_TYPE_CONVERSION=Error +INTERFACE_ELEMENT_TYPE_REMOVED_FIELD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_METHOD=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_MEMBER=Error +INTERFACE_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +INVALID_JAVADOC_TAG=Ignore +INVALID_REFERENCE_IN_SYSTEM_LIBRARIES=Error +MISSING_EE_DESCRIPTIONS=Warning +LEAK_EXTEND=Warning +LEAK_FIELD_DECL=Warning +LEAK_IMPLEMENT=Warning +LEAK_METHOD_PARAM=Warning +LEAK_METHOD_RETURN_TYPE=Warning +METHOD_ELEMENT_TYPE_ADDED_RESTRICTIONS=Error +METHOD_ELEMENT_TYPE_ADDED_TYPE_PARAMETER=Error +METHOD_ELEMENT_TYPE_CHANGED_DECREASE_ACCESS=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_ABSTRACT_TO_ABSTRACT=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_FINAL_TO_FINAL=Error +METHOD_ELEMENT_TYPE_CHANGED_NON_STATIC_TO_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_STATIC_TO_NON_STATIC=Error +METHOD_ELEMENT_TYPE_CHANGED_VARARGS_TO_ARRAY=Error +METHOD_ELEMENT_TYPE_REMOVED_ANNOTATION_DEFAULT_VALUE=Error +METHOD_ELEMENT_TYPE_REMOVED_TYPE_PARAMETER=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_ADDED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_CHANGED_INTERFACE_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_CLASS_BOUND=Error +TYPE_PARAMETER_ELEMENT_TYPE_REMOVED_INTERFACE_BOUND=Error +UNUSED_PROBLEM_FILTERS=Ignore +automatically_removed_unused_problem_filters=Disabled +eclipse.preferences.version=1 +incompatible_api_component_version=Error +incompatible_api_component_version_include_major_without_breaking_change=Disabled +incompatible_api_component_version_include_minor_without_api_change=Disabled +invalid_since_tag_version=Error +malformed_since_tag=Error +missing_since_tag=Error +report_api_breakage_when_major_version_incremented=Disabled +report_resolution_errors_api_component=Warning diff --git a/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.prefs b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.prefs new file mode 100644 index 0000000000..fe01bb701d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/.settings/org.eclipse.pde.prefs @@ -0,0 +1,31 @@ +#Thu Feb 04 09:44:24 CET 2010 +compilers.f.unresolved-features=1 +compilers.f.unresolved-plugins=1 +compilers.incompatible-environment=1 +compilers.p.build=1 +compilers.p.build.bin.includes=1 +compilers.p.build.java.compliance=1 +compilers.p.build.missing.output=2 +compilers.p.build.output.library=1 +compilers.p.build.source.library=1 +compilers.p.build.src.includes=1 +compilers.p.deprecated=2 +compilers.p.discouraged-class=1 +compilers.p.internal=1 +compilers.p.missing-packages=1 +compilers.p.missing-version-export-package=1 +compilers.p.missing-version-import-package=1 +compilers.p.missing-version-require-bundle=1 +compilers.p.no-required-att=0 +compilers.p.not-externalized-att=2 +compilers.p.unknown-attribute=1 +compilers.p.unknown-class=1 +compilers.p.unknown-element=1 +compilers.p.unknown-identifier=1 +compilers.p.unknown-resource=1 +compilers.p.unresolved-ex-points=0 +compilers.p.unresolved-import=0 +compilers.s.create-docs=false +compilers.s.doc-folder=doc +compilers.s.open-tags=1 +eclipse.preferences.version=1 diff --git a/plugins/org.eclipse.emf.cdo.evolution/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo.evolution/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..3ed48d3abf --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/META-INF/MANIFEST.MF @@ -0,0 +1,18 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: %pluginName +Bundle-SymbolicName: org.eclipse.emf.cdo.evolution;singleton:=true +Bundle-Version: 1.0.0.qualifier +Bundle-ClassPath: . +Bundle-Activator: org.eclipse.emf.cdo.evolution.impl.EvolutionPlugin$Implementation +Bundle-Vendor: %providerName +Bundle-Localization: plugin +Bundle-RequiredExecutionEnvironment: J2SE-1.5 +Export-Package: org.eclipse.emf.cdo.evolution;version="1.0.0", + org.eclipse.emf.cdo.evolution.impl;version="1.0.0", + org.eclipse.emf.cdo.evolution.util;version="1.0.0" +Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.5.0,4.0.0)";visibility:=reexport, + org.eclipse.emf.ecore;bundle-version="[2.5.0,3.0.0)";visibility:=reexport, + org.eclipse.emf.cdo;bundle-version="[4.0.0,5.0.0)";visibility:=reexport +Bundle-ActivationPolicy: lazy +Automatic-Module-Name: org.eclipse.emf.cdo.evolution diff --git a/plugins/org.eclipse.emf.cdo.evolution/about.html b/plugins/org.eclipse.emf.cdo.evolution/about.html new file mode 100644 index 0000000000..d35d5aed64 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/about.html @@ -0,0 +1,28 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/> +<title>About</title> +</head> +<body lang="EN-US"> +<h2>About This Content</h2> + +<p>June 5, 2007</p> +<h3>License</h3> + +<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise +indicated below, the Content is provided to you under the terms and conditions of the +Eclipse Public License Version 1.0 ("EPL"). A copy of the EPL is available +at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>. +For purposes of the EPL, "Program" will mean the Content.</p> + +<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is +being redistributed by another party ("Redistributor") and different terms and conditions may +apply to your use of any object code in the Content. Check the Redistributor's license that was +provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise +indicated below, the terms and conditions of the EPL still apply to any source code in the Content +and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p> + +</body> +</html> diff --git a/plugins/org.eclipse.emf.cdo.evolution/build.properties b/plugins/org.eclipse.emf.cdo.evolution/build.properties new file mode 100644 index 0000000000..310af6c0ef --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/build.properties @@ -0,0 +1,27 @@ +# Copyright (c) 2013, 2017 Eike Stepper (Loehne, Germany) and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Eike Stepper - initial API and implementation + +# NLS_MESSAGEFORMAT_VAR + +bin.includes = .,\ + model/,\ + META-INF/,\ + plugin.xml,\ + plugin.properties,\ + about.html +jars.compile.order = . +source.. = src/ +output.. = bin/ +src.includes = about.html,\ + pom.xml + +doc.project = org.eclipse.emf.cdo.doc + +generateSourceReferences = true + diff --git a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore new file mode 100644 index 0000000000..b40781227a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.ecore @@ -0,0 +1,213 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="evolution" nsURI="http://www.eclipse.org/emf/CDO/evolution/1.0.0" + nsPrefix="evolution"> + <eClassifiers xsi:type="ecore:EClass" name="ModelSet" abstract="true"> + <eOperations name="getEvolution" eType="#//Evolution"/> + <eOperations name="getVersion" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/> + <eOperations name="getPreviousRelease" eType="#//Release"/> + <eOperations name="getRootPackages" upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage"/> + <eOperations name="getAllPackages" upperBound="-1" eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EPackage"/> + <eOperations name="containsElement" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EBoolean"> + <eParameters name="modelElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getElement"> + <eGenericType eTypeParameter="#//ModelSet/getElement/T"/> + <eTypeParameters name="T"> + <eBounds eClassifier="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eTypeParameters> + <eParameters name="id" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"/> + </eOperations> + <eOperations name="getElementID" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"> + <eParameters name="modelElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getElementID" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EString"> + <eParameters name="modelElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + <eParameters name="considerOldIDs" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + </eOperations> + <eOperations name="compare" eType="#//ModelSetChange"> + <eParameters name="other" eType="#//ModelSet"/> + </eOperations> + <eOperations name="getMigration" eType="#//Migration"> + <eParameters name="diagnosticID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eOperations> + <eStructuralFeatures xsi:type="ecore:EReference" name="change" eType="#//ModelSetChange" + transient="true" unsettable="true" derived="true" containment="true" resolveProxies="false"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + <details key="suppressedUnsetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="migrations" upperBound="-1" + eType="#//Migration" containment="true" eOpposite="#//Migration/modelSet"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Model"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="ModelLoaded IDs_Exist NamespaceReflectsChange"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="evolution" lowerBound="1" + eType="#//Evolution" eOpposite="#//Evolution/models"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="uRI" eType="#//URI"> + <eAnnotations source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData"> + <details key="kind" value="attribute"/> + <details key="name" value="uri"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="rootPackage" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="allPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="referencedPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="missingPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Evolution" eSuperTypes="#//ModelSet"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="NotEmpty PackagesUnique NoMissingPackages IDsUnique"/> + </eAnnotations> + <eOperations name="getRelease" eType="#//Release"> + <eParameters name="version" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt"/> + </eOperations> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEcorePackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" + defaultValueLiteral="true"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEresourcePackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="useEtypesPackage" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="uniqueNamespaces" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EBoolean" + defaultValueLiteral="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="models" upperBound="-1" + eType="#//Model" containment="true" eOpposite="#//Model/evolution"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="rootPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="allPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="missingPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="releases" upperBound="-1" + eType="#//Release" containment="true" eOpposite="#//Release/evolution"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="orderedReleases" upperBound="-1" + eType="#//Release" changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="latestRelease" eType="#//Release" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="nextReleaseVersion" eType="ecore:EDataType ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EInt" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Release" eSuperTypes="#//ModelSet"> + <eStructuralFeatures xsi:type="ecore:EReference" name="evolution" lowerBound="1" + eType="#//Evolution" eOpposite="#//Evolution/releases"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="version" lowerBound="1" + eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EInt"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="date" lowerBound="1" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EDate"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="nextRelease" eType="#//Release" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="previousRelease" eType="#//Release" + changeable="false" volatile="true" transient="true" derived="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="rootPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + containment="true"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="allPackages" upperBound="-1" + eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EPackage" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Change" abstract="true"> + <eOperations name="getModelSetChange" eType="#//ModelSetChange"/> + <eOperations name="getOldElementFor" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eParameters name="newElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getNewElementsFor" upperBound="-1" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eParameters name="oldElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + </eOperations> + <eOperations name="getOldModelSet" eType="#//ModelSet"/> + <eOperations name="getNewModelSet" eType="#//ModelSet"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="parent" eType="#//Change" + resolveProxies="false" eOpposite="#//Change/children"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="children" upperBound="-1" + eType="#//Change" containment="true" resolveProxies="false" eOpposite="#//Change/parent"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="ModelSetChange" eSuperTypes="#//Change"> + <eStructuralFeatures xsi:type="ecore:EReference" name="oldModelSet" eType="#//ModelSet"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="newModelSet" eType="#//ModelSet"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="ElementChange" eSuperTypes="#//Change"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="FeaturePathIsKnown"/> + </eAnnotations> + <eOperations name="getElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="oldElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EReference" name="newElement" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EModelElement"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ChangeKind"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="PropertyChange" eSuperTypes="#//Change"> + <eStructuralFeatures xsi:type="ecore:EReference" name="feature" eType="ecore:EClass ../../org.eclipse.emf.ecore/model/Ecore.ecore#//EStructuralFeature"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="oldValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="newValue" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EJavaObject"> + <eAnnotations source="http://www.eclipse.org/emf/2002/GenModel"> + <details key="suppressedSetVisibility" value="true"/> + </eAnnotations> + </eStructuralFeatures> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="kind" eType="#//ChangeKind" + changeable="false" volatile="true" transient="true" derived="true"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="Migration" abstract="true"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="NotObsolete"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="modelSet" eType="#//ModelSet" + eOpposite="#//ModelSet/migrations"/> + <eStructuralFeatures xsi:type="ecore:EAttribute" name="diagnosticID" eType="ecore:EDataType http://www.eclipse.org/emf/2002/Ecore#//EString"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EClass" name="FeaturePathMigration" eSuperTypes="#//Migration"> + <eAnnotations source="http://www.eclipse.org/emf/2002/Ecore"> + <details key="constraints" value="NewFeatureReachable"/> + </eAnnotations> + <eStructuralFeatures xsi:type="ecore:EReference" name="fromClass" lowerBound="1" + eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="toClass" lowerBound="1" + eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EClass"/> + <eStructuralFeatures xsi:type="ecore:EReference" name="featurePath" upperBound="-1" + eType="ecore:EClass http://www.eclipse.org/emf/2002/Ecore#//EReference"/> + </eClassifiers> + <eClassifiers xsi:type="ecore:EDataType" name="URI" instanceClassName="org.eclipse.emf.common.util.URI"/> + <eClassifiers xsi:type="ecore:EEnum" name="ChangeKind"> + <eLiterals name="NONE"/> + <eLiterals name="CHANGED" value="1"/> + <eLiterals name="REMOVED" value="2"/> + <eLiterals name="ADDED" value="3"/> + <eLiterals name="COPIED" value="4"/> + <eLiterals name="MOVED" value="5"/> + </eClassifiers> +</ecore:EPackage> diff --git a/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel new file mode 100644 index 0000000000..ae03a8ab51 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/model/evolution.genmodel @@ -0,0 +1,128 @@ +<?xml version="1.0" encoding="UTF-8"?> +<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" + xmlns:genmodel="http://www.eclipse.org/emf/2002/GenModel" modelDirectory="/org.eclipse.emf.cdo.evolution/src" creationIcons="false" + modelPluginID="org.eclipse.emf.cdo.evolution" modelName="Evolution" modelPluginClass="org.eclipse.emf.cdo.evolution.impl.EvolutionPlugin" + rootExtendsInterface="org.eclipse.emf.cdo.CDOObject" rootExtendsClass="org.eclipse.emf.internal.cdo.CDOObjectImpl" + testsDirectory="" importerID="org.eclipse.emf.importer.cdo" featureDelegation="Dynamic" + complianceLevel="5.0" copyrightFields="false" optimizedHasChildren="true" colorProviders="true" + fontProviders="true" usedGenPackages="../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore" + operationReflection="true" importOrganizing="true" decoration="Live" styleProviders="true" + cleanup="true" autoResizeProperties="true" findAction="true" collapseAllAction="true"> + <foreignModel>evolution.ecore</foreignModel> + <modelPluginVariables>CDO=org.eclipse.emf.cdo</modelPluginVariables> + <genPackages prefix="Evolution" basePackage="org.eclipse.emf.cdo" disposableProviderFactory="true" + dataTypeConverters="true" multipleEditorPages="false" extensibleProviderFactory="true" + childCreationExtenders="true" ecorePackage="evolution.ecore#/"> + <genEnums typeSafeEnumCompatible="false" ecoreEnum="evolution.ecore#//ChangeKind"> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/NONE"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/CHANGED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/REMOVED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/ADDED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/COPIED"/> + <genEnumLiterals ecoreEnumLiteral="evolution.ecore#//ChangeKind/MOVED"/> + </genEnums> + <genDataTypes ecoreDataType="evolution.ecore#//URI"/> + <genClasses image="false" ecoreClass="evolution.ecore#//ModelSet"> + <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//ModelSet/change"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference evolution.ecore#//ModelSet/migrations"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getEvolution"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getVersion"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getPreviousRelease"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getRootPackages"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getAllPackages"/> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/containsElement"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/containsElement/modelElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getElement"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElement/id"/> + <genTypeParameters ecoreTypeParameter="evolution.ecore#//ModelSet/getElement/T"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getElementID"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElementID/modelElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getElementID.1"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElementID.1/modelElement"/> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getElementID.1/considerOldIDs"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/compare"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/compare/other"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//ModelSet/getMigration"> + <genParameters ecoreParameter="evolution.ecore#//ModelSet/getMigration/diagnosticID"/> + </genOperations> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//Model"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/evolution"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Model/uRI"/> + <genFeatures property="Readonly" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/rootPackage"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/allPackages"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/referencedPackages"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Model/missingPackages"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//Evolution"> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/useEcorePackage"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/useEresourcePackage"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/useEtypesPackage"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/uniqueNamespaces"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/models"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/rootPackages"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/allPackages"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/missingPackages"/> + <genFeatures property="None" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/releases"/> + <genFeatures property="Readonly" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/orderedReleases"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Evolution/latestRelease"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Evolution/nextReleaseVersion"/> + <genOperations ecoreOperation="evolution.ecore#//Evolution/getRelease"> + <genParameters ecoreParameter="evolution.ecore#//Evolution/getRelease/version"/> + </genOperations> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//Release"> + <genFeatures property="None" notify="false" createChild="false" propertySortChoices="true" + ecoreFeature="ecore:EReference evolution.ecore#//Release/evolution"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Release/version"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Release/date"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Release/nextRelease"/> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Release/previousRelease"/> + <genFeatures property="None" children="true" createChild="true" ecoreFeature="ecore:EReference evolution.ecore#//Release/rootPackages"/> + <genFeatures property="Readonly" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Release/allPackages"/> + </genClasses> + <genClasses image="false" ecoreClass="evolution.ecore#//Change"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Change/parent"/> + <genFeatures property="None" children="true" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Change/children"/> + <genOperations ecoreOperation="evolution.ecore#//Change/getModelSetChange"/> + <genOperations ecoreOperation="evolution.ecore#//Change/getOldElementFor"> + <genParameters ecoreParameter="evolution.ecore#//Change/getOldElementFor/newElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//Change/getNewElementsFor"> + <genParameters ecoreParameter="evolution.ecore#//Change/getNewElementsFor/oldElement"/> + </genOperations> + <genOperations ecoreOperation="evolution.ecore#//Change/getOldModelSet"/> + <genOperations ecoreOperation="evolution.ecore#//Change/getNewModelSet"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//ModelSetChange"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ModelSetChange/oldModelSet"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ModelSetChange/newModelSet"/> + </genClasses> + <genClasses image="false" ecoreClass="evolution.ecore#//ElementChange"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ElementChange/oldElement"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//ElementChange/newElement"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//ElementChange/kind"/> + <genOperations ecoreOperation="evolution.ecore#//ElementChange/getElement"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//PropertyChange"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//PropertyChange/feature"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//PropertyChange/oldValue"/> + <genFeatures createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//PropertyChange/newValue"/> + <genFeatures property="Readonly" createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//PropertyChange/kind"/> + </genClasses> + <genClasses image="false" ecoreClass="evolution.ecore#//Migration"> + <genFeatures property="None" notify="false" createChild="false" ecoreFeature="ecore:EReference evolution.ecore#//Migration/modelSet"/> + <genFeatures property="None" createChild="false" ecoreFeature="ecore:EAttribute evolution.ecore#//Migration/diagnosticID"/> + </genClasses> + <genClasses ecoreClass="evolution.ecore#//FeaturePathMigration"> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//FeaturePathMigration/fromClass"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//FeaturePathMigration/toClass"/> + <genFeatures notify="false" createChild="false" propertySortChoices="true" ecoreFeature="ecore:EReference evolution.ecore#//FeaturePathMigration/featurePath"/> + </genClasses> + </genPackages> +</genmodel:GenModel> diff --git a/plugins/org.eclipse.emf.cdo.evolution/plugin.properties b/plugins/org.eclipse.emf.cdo.evolution/plugin.properties new file mode 100644 index 0000000000..8e8682ad25 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/plugin.properties @@ -0,0 +1,36 @@ +# Copyright (c) 2013 Eike Stepper (Loehne, Germany) and others. +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Eclipse Public License v1.0 +# which accompanies this distribution, and is available at +# http://www.eclipse.org/legal/epl-v10.html +# +# Contributors: +# Eike Stepper - initial API and implementation + +pluginName = CDO Model Repository Evolution +providerName = Eclipse Modeling Project + +_UI_NoModel_diagnostic = The evolution has no model +_UI_NO_URI_diagnostic = The URI is missing +_UI_NO_RESOURCE_SET_diagnostic = A resource set is not available +_UI_RESOURCE_NOT_FOUND_diagnostic = The resource ''{0}'' is not found +_UI_LOAD_PROBLEM_diagnostic = The resource ''{0}'' could not be loaded +_UI_CONTENT_PROBLEM_diagnostic = The resource ''{0}'' does not contain a package + +_UI_PackageNotUnique_diagnostic = The model URI ''{0}'' is not unique +_UI_NsuriNotUnique_diagnostic = The nsURI ''{0}'' of package ''{0}'' is not unique +_UI_MissingPackage_diagnostic = The referenced package ''{0}'' is missing + +_UI_NsUriMustChange_diagnostic = The structure of the package ''{0}'' has changed since release v{1} but the nsURI is still the same + +_UI_IDsExist_AnnotationMissing_diagnostic = The ID annotation is missing +_UI_IDsExist_NoValue_diagnostic = The ID annotation has no value +_UI_IDNotUnique_diagnostic = The ID ''{0}'' is not unique + +_UI_MigrationUnused_diagnostic = The migration ''{0}'' is unused + +_UI_FeaturePathIsKnown_diagnostic = The feature ''{0}'' has been {1} from ''{2}'' but the feature path is not known + +_UI_Unchanged_diagnostic = The models are unchanged +_UI_UnchangedSince_diagnostic = The models are unchanged since release v{0} +_UI_Release_diagnostic = The models can be released now diff --git a/plugins/org.eclipse.emf.cdo.evolution/plugin.xml b/plugins/org.eclipse.emf.cdo.evolution/plugin.xml new file mode 100644 index 0000000000..3e851a63fa --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/plugin.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="UTF-8"?> +<?eclipse version="3.4"?> +<!-- + Copyright (c) 2013 Eike Stepper (Loehne, Germany) and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Eike Stepper - initial API and implementation +--> + +<plugin> + + + <extension point="org.eclipse.emf.ecore.generated_package"> + <!-- @generated evolution --> + <package + uri="http://www.eclipse.org/emf/CDO/evolution/1.0.0" + class="org.eclipse.emf.cdo.evolution.EvolutionPackage" + genModel="model/evolution.genmodel"/> + </extension> + +</plugin> diff --git a/plugins/org.eclipse.emf.cdo.evolution/pom.xml b/plugins/org.eclipse.emf.cdo.evolution/pom.xml new file mode 100644 index 0000000000..755d2139b4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/pom.xml @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + Copyright (c) 2017 Eike Stepper (Loehne, Germany) and others. + All rights reserved. This program and the accompanying materials + are made available under the terms of the Eclipse Public License v1.0 + which accompanies this distribution, and is available at + http://www.eclipse.org/legal/epl-v10.html + + Contributors: + Eike Stepper - initial API and implementation +--> +<project + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" + xmlns="http://maven.apache.org/POM/4.0.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.plugins</artifactId> + <version>4.7.0-SNAPSHOT</version> + <relativePath>../../releng/org.eclipse.emf.cdo.releng.parent/plugins</relativePath> + </parent> + + <groupId>org.eclipse.emf.cdo</groupId> + <artifactId>org.eclipse.emf.cdo.evolution</artifactId> + <version>1.0.0-SNAPSHOT</version> + <packaging>eclipse-plugin</packaging> + +</project> diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Change.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Change.java new file mode 100644 index 0000000000..7492053477 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Change.java @@ -0,0 +1,116 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.cdo.CDOObject; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EModelElement; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Change</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.Change#getParent <em>Parent</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Change#getChildren <em>Children</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChange() + * @model abstract="true" + * @extends CDOObject + * @generated + */ +public interface Change extends CDOObject +{ + /** + * Returns the value of the '<em><b>Parent</b></em>' container reference. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Change#getChildren <em>Children</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Parent</em>' container reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Parent</em>' container reference. + * @see #setParent(Change) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChange_Parent() + * @see org.eclipse.emf.cdo.evolution.Change#getChildren + * @model opposite="children" resolveProxies="false" transient="false" + * @generated + */ + Change getParent(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Change#getParent <em>Parent</em>}' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Parent</em>' container reference. + * @see #getParent() + * @generated + */ + void setParent(Change value); + + /** + * Returns the value of the '<em><b>Children</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Change}. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Change#getParent <em>Parent</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Children</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Children</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChange_Children() + * @see org.eclipse.emf.cdo.evolution.Change#getParent + * @model opposite="parent" containment="true" + * @generated + */ + EList<Change> getChildren(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + ModelSet getOldModelSet(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + ModelSet getNewModelSet(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + ModelSetChange getModelSetChange(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + EModelElement getOldElementFor(EModelElement newElement); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + EList<EModelElement> getNewElementsFor(EModelElement oldElement); + +} // Change diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java new file mode 100644 index 0000000000..d77d774386 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ChangeKind.java @@ -0,0 +1,330 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.Enumerator; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * <!-- begin-user-doc --> + * A representation of the literals of the enumeration '<em><b>Change Kind</b></em>', + * and utility methods for working with them. + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getChangeKind() + * @model + * @generated + */ +public enum ChangeKind implements Enumerator +{ + /** + * The '<em><b>NONE</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #NONE_VALUE + * @generated + * @ordered + */ + NONE(0, "NONE", "NONE"), + + /** + * The '<em><b>CHANGED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #CHANGED_VALUE + * @generated + * @ordered + */ + CHANGED(1, "CHANGED", "CHANGED"), + /** + * The '<em><b>REMOVED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #REMOVED_VALUE + * @generated + * @ordered + */ + REMOVED(2, "REMOVED", "REMOVED"), + /** + * The '<em><b>ADDED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #ADDED_VALUE + * @generated + * @ordered + */ + ADDED(3, "ADDED", "ADDED"), + /** + * The '<em><b>COPIED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #COPIED_VALUE + * @generated + * @ordered + */ + COPIED(4, "COPIED", "COPIED"), + /** + * The '<em><b>MOVED</b></em>' literal object. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #MOVED_VALUE + * @generated + * @ordered + */ + MOVED(5, "MOVED", "MOVED"); + + /** + * The '<em><b>NONE</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>NONE</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #NONE + * @model + * @generated + * @ordered + */ + public static final int NONE_VALUE = 0; + + /** + * The '<em><b>CHANGED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>CHANGED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #CHANGED + * @model + * @generated + * @ordered + */ + public static final int CHANGED_VALUE = 1; + + /** + * The '<em><b>REMOVED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>REMOVED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #REMOVED + * @model + * @generated + * @ordered + */ + public static final int REMOVED_VALUE = 2; + + /** + * The '<em><b>ADDED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>ADDED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #ADDED + * @model + * @generated + * @ordered + */ + public static final int ADDED_VALUE = 3; + + /** + * The '<em><b>COPIED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>COPIED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #COPIED + * @model + * @generated + * @ordered + */ + public static final int COPIED_VALUE = 4; + + /** + * The '<em><b>MOVED</b></em>' literal value. + * <!-- begin-user-doc --> + * <p> + * If the meaning of '<em><b>MOVED</b></em>' literal object isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @see #MOVED + * @model + * @generated + * @ordered + */ + public static final int MOVED_VALUE = 5; + + /** + * An array of all the '<em><b>Change Kind</b></em>' enumerators. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static final ChangeKind[] VALUES_ARRAY = new ChangeKind[] { NONE, CHANGED, REMOVED, ADDED, COPIED, MOVED, }; + + /** + * A public read-only list of all the '<em><b>Change Kind</b></em>' enumerators. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final List<ChangeKind> VALUES = Collections.unmodifiableList(Arrays.asList(VALUES_ARRAY)); + + /** + * Returns the '<em><b>Change Kind</b></em>' literal with the specified literal value. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param literal the literal. + * @return the matching enumerator or <code>null</code>. + * @generated + */ + public static ChangeKind get(String literal) + { + for (int i = 0; i < VALUES_ARRAY.length; ++i) + { + ChangeKind result = VALUES_ARRAY[i]; + if (result.toString().equals(literal)) + { + return result; + } + } + return null; + } + + /** + * Returns the '<em><b>Change Kind</b></em>' literal with the specified name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param name the name. + * @return the matching enumerator or <code>null</code>. + * @generated + */ + public static ChangeKind getByName(String name) + { + for (int i = 0; i < VALUES_ARRAY.length; ++i) + { + ChangeKind result = VALUES_ARRAY[i]; + if (result.getName().equals(name)) + { + return result; + } + } + return null; + } + + /** + * Returns the '<em><b>Change Kind</b></em>' literal with the specified integer value. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the integer value. + * @return the matching enumerator or <code>null</code>. + * @generated + */ + public static ChangeKind get(int value) + { + switch (value) + { + case NONE_VALUE: + return NONE; + case CHANGED_VALUE: + return CHANGED; + case REMOVED_VALUE: + return REMOVED; + case ADDED_VALUE: + return ADDED; + case COPIED_VALUE: + return COPIED; + case MOVED_VALUE: + return MOVED; + } + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private final int value; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private final String name; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private final String literal; + + /** + * Only this class can construct instances. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private ChangeKind(int value, String name, String literal) + { + this.value = value; + this.name = name; + this.literal = literal; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public int getValue() + { + return value; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getName() + { + return name; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getLiteral() + { + return literal; + } + + /** + * Returns the literal value of the enumerator, which is its string representation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String toString() + { + return literal; + } + +} // ChangeKind diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ElementChange.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ElementChange.java new file mode 100644 index 0000000000..5daa1bf5a5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ElementChange.java @@ -0,0 +1,82 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.ecore.EModelElement; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Element Change</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.ElementChange#getOldElement <em>Old Element</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.ElementChange#getNewElement <em>New Element</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.ElementChange#getKind <em>Kind</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='FeaturePathIsKnown'" + * @generated + */ +public interface ElementChange extends Change +{ + /** + * Returns the value of the '<em><b>Old Element</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Old Element</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Old Element</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange_OldElement() + * @model suppressedSetVisibility="true" + * @generated + */ + EModelElement getOldElement(); + + /** + * Returns the value of the '<em><b>New Element</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>New Element</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>New Element</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange_NewElement() + * @model suppressedSetVisibility="true" + * @generated + */ + EModelElement getNewElement(); + + /** + * Returns the value of the '<em><b>Kind</b></em>' attribute. + * The literals are from the enumeration {@link org.eclipse.emf.cdo.evolution.ChangeKind}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Kind</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Kind</em>' attribute. + * @see org.eclipse.emf.cdo.evolution.ChangeKind + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getElementChange_Kind() + * @model suppressedSetVisibility="true" + * @generated + */ + ChangeKind getKind(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + EModelElement getElement(); + +} // ElementChange diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java new file mode 100644 index 0000000000..528cbb50d5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Evolution.java @@ -0,0 +1,286 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EPackage; + +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Evolution</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEcorePackage <em>Use Ecore Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEresourcePackage <em>Use Eresource Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEtypesPackage <em>Use Etypes Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#isUniqueNamespaces <em>Unique Namespaces</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getModels <em>Models</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getRootPackages <em>Root Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getAllPackages <em>All Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getMissingPackages <em>Missing Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getReleases <em>Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getOrderedReleases <em>Ordered Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getLatestRelease <em>Latest Release</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Evolution#getNextReleaseVersion <em>Next Release Version</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='NotEmpty PackagesUnique NoMissingPackages IDsUnique'" + * @generated + */ +public interface Evolution extends ModelSet +{ + /** + * Returns the value of the '<em><b>Models</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Model}. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Model#getEvolution <em>Evolution</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Models</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Models</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_Models() + * @see org.eclipse.emf.cdo.evolution.Model#getEvolution + * @model opposite="evolution" containment="true" + * @generated + */ + EList<Model> getModels(); + + /** + * Returns the value of the '<em><b>Use Ecore Package</b></em>' attribute. + * The default value is <code>"true"</code>. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Use Ecore Package</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Use Ecore Package</em>' attribute. + * @see #setUseEcorePackage(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UseEcorePackage() + * @model default="true" + * @generated + */ + boolean isUseEcorePackage(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEcorePackage <em>Use Ecore Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Use Ecore Package</em>' attribute. + * @see #isUseEcorePackage() + * @generated + */ + void setUseEcorePackage(boolean value); + + /** + * Returns the value of the '<em><b>Use Eresource Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Use Eresource Package</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Use Eresource Package</em>' attribute. + * @see #setUseEresourcePackage(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UseEresourcePackage() + * @model + * @generated + */ + boolean isUseEresourcePackage(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEresourcePackage <em>Use Eresource Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Use Eresource Package</em>' attribute. + * @see #isUseEresourcePackage() + * @generated + */ + void setUseEresourcePackage(boolean value); + + /** + * Returns the value of the '<em><b>Use Etypes Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Use Etypes Package</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Use Etypes Package</em>' attribute. + * @see #setUseEtypesPackage(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UseEtypesPackage() + * @model + * @generated + */ + boolean isUseEtypesPackage(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEtypesPackage <em>Use Etypes Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Use Etypes Package</em>' attribute. + * @see #isUseEtypesPackage() + * @generated + */ + void setUseEtypesPackage(boolean value); + + /** + * Returns the value of the '<em><b>Unique Namespaces</b></em>' attribute. + * The default value is <code>"true"</code>. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Unique Namespaces</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Unique Namespaces</em>' attribute. + * @see #setUniqueNamespaces(boolean) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_UniqueNamespaces() + * @model default="true" + * @generated + */ + boolean isUniqueNamespaces(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Evolution#isUniqueNamespaces <em>Unique Namespaces</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Unique Namespaces</em>' attribute. + * @see #isUniqueNamespaces() + * @generated + */ + void setUniqueNamespaces(boolean value); + + /** + * Returns the value of the '<em><b>Root Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Root Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Root Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_RootPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getRootPackages(); + + /** + * Returns the value of the '<em><b>All Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>All Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>All Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_AllPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getAllPackages(); + + public Map<String, Set<EPackage>> getReleasedPackages(); + + /** + * Returns the value of the '<em><b>Releases</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Release}. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Release#getEvolution <em>Evolution</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Releases</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Releases</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_Releases() + * @see org.eclipse.emf.cdo.evolution.Release#getEvolution + * @model opposite="evolution" containment="true" + * @generated + */ + EList<Release> getReleases(); + + /** + * Returns the value of the '<em><b>Ordered Releases</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Release}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Ordered Releases</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Ordered Releases</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_OrderedReleases() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<Release> getOrderedReleases(); + + /** + * Returns the value of the '<em><b>Latest Release</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Latest Release</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Latest Release</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_LatestRelease() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + Release getLatestRelease(); + + /** + * Returns the value of the '<em><b>Next Release Version</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Next Release Version</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Next Release Version</em>' attribute. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_NextReleaseVersion() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + int getNextReleaseVersion(); + + /** + * Returns the value of the '<em><b>Missing Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Missing Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Missing Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getEvolution_MissingPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getMissingPackages(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + Release getRelease(int version); + +} // Evolution diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionFactory.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionFactory.java new file mode 100644 index 0000000000..90503ae4bc --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionFactory.java @@ -0,0 +1,148 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EFactory; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EStructuralFeature; + +/** + * <!-- begin-user-doc --> + * The <b>Factory</b> for the model. + * It provides a create method for each non-abstract class of the model. + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage + * @generated + */ +public interface EvolutionFactory extends EFactory +{ + /** + * The singleton instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EvolutionFactory eINSTANCE = org.eclipse.emf.cdo.evolution.impl.EvolutionFactoryImpl.init(); + + /** + * Returns a new object of class '<em>Model</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Model</em>'. + * @generated + */ + Model createModel(); + + Model createModel(URI uri); + + /** + * Returns a new object of class '<em>Evolution</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Evolution</em>'. + * @generated + */ + Evolution createEvolution(); + + /** + * Returns a new object of class '<em>Release</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Release</em>'. + * @generated + */ + Release createRelease(); + + /** + * Returns a new object of class '<em>Model Set Change</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Model Set Change</em>'. + * @generated + */ + ModelSetChange createModelSetChange(); + + ModelSetChange createModelSetChange(ModelSet[] modelSetChain); + + /** + * Returns a new object of class '<em>Element Change</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Element Change</em>'. + * @generated + */ + ElementChange createElementChange(); + + ElementChange createElementChange(EModelElement oldElement, EModelElement newElement, ChangeKind kind); + + /** + * Returns a new object of class '<em>Property Change</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Property Change</em>'. + * @generated + */ + PropertyChange createPropertyChange(); + + /** + * Returns a new object of class '<em>Feature Path Migration</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return a new object of class '<em>Feature Path Migration</em>'. + * @generated + */ + FeaturePathMigration createFeaturePathMigration(); + + PropertyChange createPropertyChange(EStructuralFeature feature, Object oldValue, Object newValue); + + /** + * Returns an instance of data type '<em>Change Kind</em>' corresponding the given literal. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param literal a literal of the data type. + * @return a new instance value of the data type. + * @generated + */ + ChangeKind createChangeKind(String literal); + + /** + * Returns a literal representation of an instance of data type '<em>Change Kind</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param instanceValue an instance value of the data type. + * @return a literal representation of the instance value. + * @generated + */ + String convertChangeKind(ChangeKind instanceValue); + + /** + * Returns an instance of data type '<em>URI</em>' corresponding the given literal. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param literal a literal of the data type. + * @return a new instance value of the data type. + * @generated + */ + URI createURI(String literal); + + /** + * Returns a literal representation of an instance of data type '<em>URI</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param instanceValue an instance value of the data type. + * @return a literal representation of the instance value. + * @generated + */ + String convertURI(URI instanceValue); + + /** + * Returns the package supported by this factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the package supported by this factory. + * @generated + */ + EvolutionPackage getEvolutionPackage(); + +} // EvolutionFactory diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java new file mode 100644 index 0000000000..3be6a2ddf1 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/EvolutionPackage.java @@ -0,0 +1,2761 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EOperation; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; + +/** + * <!-- begin-user-doc --> + * The <b>Package</b> for the model. + * It contains accessors for the meta objects to represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each operation of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionFactory + * @model kind="package" + * @generated + */ +public interface EvolutionPackage extends EPackage +{ + /** + * The package name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNAME = "evolution"; + + /** + * The package namespace URI. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_URI = "http://www.eclipse.org/emf/CDO/evolution/1.0.0"; + + /** + * The package namespace name. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + String eNS_PREFIX = "evolution"; + + /** + * The singleton instance of the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EvolutionPackage eINSTANCE = org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl.init(); + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelSetImpl <em>Model Set</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelSetImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModelSet() + * @generated + */ + int MODEL_SET = 0; + + /** + * The feature id for the '<em><b>Change</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET__CHANGE = 0; + + /** + * The feature id for the '<em><b>Migrations</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET__MIGRATIONS = 1; + + /** + * The number of structural features of the '<em>Model Set</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_FEATURE_COUNT = 2; + + /** + * The operation id for the '<em>Get Evolution</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_EVOLUTION = 0; + + /** + * The operation id for the '<em>Get Version</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_VERSION = 1; + + /** + * The operation id for the '<em>Get Previous Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_PREVIOUS_RELEASE = 2; + + /** + * The operation id for the '<em>Get Root Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ROOT_PACKAGES = 3; + + /** + * The operation id for the '<em>Get All Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ALL_PACKAGES = 4; + + /** + * The operation id for the '<em>Contains Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT = 5; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ELEMENT__STRING = 6; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT = 7; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = 8; + + /** + * The operation id for the '<em>Compare</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___COMPARE__MODELSET = 9; + + /** + * The operation id for the '<em>Get Migration</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET___GET_MIGRATION__STRING = 10; + + /** + * The number of operations of the '<em>Model Set</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_OPERATION_COUNT = 11; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl <em>Model</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModel() + * @generated + */ + int MODEL = 1; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl <em>Evolution</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getEvolution() + * @generated + */ + int EVOLUTION = 2; + + /** + * The feature id for the '<em><b>Evolution</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__EVOLUTION = 0; + + /** + * The feature id for the '<em><b>URI</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__URI = 1; + + /** + * The feature id for the '<em><b>Root Package</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__ROOT_PACKAGE = 2; + + /** + * The feature id for the '<em><b>All Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__ALL_PACKAGES = 3; + + /** + * The feature id for the '<em><b>Referenced Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__REFERENCED_PACKAGES = 4; + + /** + * The feature id for the '<em><b>Missing Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL__MISSING_PACKAGES = 5; + + /** + * The number of structural features of the '<em>Model</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_FEATURE_COUNT = 6; + + /** + * The number of operations of the '<em>Model</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_OPERATION_COUNT = 0; + + /** + * The feature id for the '<em><b>Change</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__CHANGE = MODEL_SET__CHANGE; + + /** + * The feature id for the '<em><b>Migrations</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__MIGRATIONS = MODEL_SET__MIGRATIONS; + + /** + * The feature id for the '<em><b>Use Ecore Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__USE_ECORE_PACKAGE = MODEL_SET_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Use Eresource Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__USE_ERESOURCE_PACKAGE = MODEL_SET_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Use Etypes Package</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__USE_ETYPES_PACKAGE = MODEL_SET_FEATURE_COUNT + 2; + + /** + * The feature id for the '<em><b>Unique Namespaces</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__UNIQUE_NAMESPACES = MODEL_SET_FEATURE_COUNT + 3; + + /** + * The feature id for the '<em><b>Models</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__MODELS = MODEL_SET_FEATURE_COUNT + 4; + + /** + * The feature id for the '<em><b>Root Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__ROOT_PACKAGES = MODEL_SET_FEATURE_COUNT + 5; + + /** + * The feature id for the '<em><b>All Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__ALL_PACKAGES = MODEL_SET_FEATURE_COUNT + 6; + + /** + * The feature id for the '<em><b>Missing Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__MISSING_PACKAGES = MODEL_SET_FEATURE_COUNT + 7; + + /** + * The feature id for the '<em><b>Releases</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__RELEASES = MODEL_SET_FEATURE_COUNT + 8; + + /** + * The feature id for the '<em><b>Ordered Releases</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__ORDERED_RELEASES = MODEL_SET_FEATURE_COUNT + 9; + + /** + * The feature id for the '<em><b>Latest Release</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__LATEST_RELEASE = MODEL_SET_FEATURE_COUNT + 10; + + /** + * The feature id for the '<em><b>Next Release Version</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION__NEXT_RELEASE_VERSION = MODEL_SET_FEATURE_COUNT + 11; + + /** + * The number of structural features of the '<em>Evolution</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION_FEATURE_COUNT = MODEL_SET_FEATURE_COUNT + 12; + + /** + * The operation id for the '<em>Get Evolution</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_EVOLUTION = MODEL_SET___GET_EVOLUTION; + + /** + * The operation id for the '<em>Get Version</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_VERSION = MODEL_SET___GET_VERSION; + + /** + * The operation id for the '<em>Get Previous Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_PREVIOUS_RELEASE = MODEL_SET___GET_PREVIOUS_RELEASE; + + /** + * The operation id for the '<em>Get Root Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ROOT_PACKAGES = MODEL_SET___GET_ROOT_PACKAGES; + + /** + * The operation id for the '<em>Get All Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ALL_PACKAGES = MODEL_SET___GET_ALL_PACKAGES; + + /** + * The operation id for the '<em>Contains Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___CONTAINS_ELEMENT__EMODELELEMENT = MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ELEMENT__STRING = MODEL_SET___GET_ELEMENT__STRING; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ELEMENT_ID__EMODELELEMENT = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN; + + /** + * The operation id for the '<em>Compare</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___COMPARE__MODELSET = MODEL_SET___COMPARE__MODELSET; + + /** + * The operation id for the '<em>Get Migration</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_MIGRATION__STRING = MODEL_SET___GET_MIGRATION__STRING; + + /** + * The operation id for the '<em>Get Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION___GET_RELEASE__INT = MODEL_SET_OPERATION_COUNT + 0; + + /** + * The number of operations of the '<em>Evolution</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int EVOLUTION_OPERATION_COUNT = MODEL_SET_OPERATION_COUNT + 1; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl <em>Release</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ReleaseImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getRelease() + * @generated + */ + int RELEASE = 3; + + /** + * The feature id for the '<em><b>Change</b></em>' containment reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__CHANGE = MODEL_SET__CHANGE; + + /** + * The feature id for the '<em><b>Migrations</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__MIGRATIONS = MODEL_SET__MIGRATIONS; + + /** + * The feature id for the '<em><b>Evolution</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__EVOLUTION = MODEL_SET_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Version</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__VERSION = MODEL_SET_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Date</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__DATE = MODEL_SET_FEATURE_COUNT + 2; + + /** + * The feature id for the '<em><b>Next Release</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__NEXT_RELEASE = MODEL_SET_FEATURE_COUNT + 3; + + /** + * The feature id for the '<em><b>Previous Release</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__PREVIOUS_RELEASE = MODEL_SET_FEATURE_COUNT + 4; + + /** + * The feature id for the '<em><b>Root Packages</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__ROOT_PACKAGES = MODEL_SET_FEATURE_COUNT + 5; + + /** + * The feature id for the '<em><b>All Packages</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE__ALL_PACKAGES = MODEL_SET_FEATURE_COUNT + 6; + + /** + * The number of structural features of the '<em>Release</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE_FEATURE_COUNT = MODEL_SET_FEATURE_COUNT + 7; + + /** + * The operation id for the '<em>Get Evolution</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_EVOLUTION = MODEL_SET___GET_EVOLUTION; + + /** + * The operation id for the '<em>Get Version</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_VERSION = MODEL_SET___GET_VERSION; + + /** + * The operation id for the '<em>Get Previous Release</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_PREVIOUS_RELEASE = MODEL_SET___GET_PREVIOUS_RELEASE; + + /** + * The operation id for the '<em>Get Root Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ROOT_PACKAGES = MODEL_SET___GET_ROOT_PACKAGES; + + /** + * The operation id for the '<em>Get All Packages</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ALL_PACKAGES = MODEL_SET___GET_ALL_PACKAGES; + + /** + * The operation id for the '<em>Contains Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___CONTAINS_ELEMENT__EMODELELEMENT = MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ELEMENT__STRING = MODEL_SET___GET_ELEMENT__STRING; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ELEMENT_ID__EMODELELEMENT = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Element ID</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN; + + /** + * The operation id for the '<em>Compare</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___COMPARE__MODELSET = MODEL_SET___COMPARE__MODELSET; + + /** + * The operation id for the '<em>Get Migration</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE___GET_MIGRATION__STRING = MODEL_SET___GET_MIGRATION__STRING; + + /** + * The number of operations of the '<em>Release</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int RELEASE_OPERATION_COUNT = MODEL_SET_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ChangeImpl <em>Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getChange() + * @generated + */ + int CHANGE = 4; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE__PARENT = 0; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE__CHILDREN = 1; + + /** + * The number of structural features of the '<em>Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE_FEATURE_COUNT = 2; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_MODEL_SET_CHANGE = 0; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = 1; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = 2; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_OLD_MODEL_SET = 3; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE___GET_NEW_MODEL_SET = 4; + + /** + * The number of operations of the '<em>Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int CHANGE_OPERATION_COUNT = 5; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl <em>Model Set Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModelSetChange() + * @generated + */ + int MODEL_SET_CHANGE = 5; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__PARENT = CHANGE__PARENT; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__CHILDREN = CHANGE__CHILDREN; + + /** + * The feature id for the '<em><b>Old Model Set</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__OLD_MODEL_SET = CHANGE_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>New Model Set</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE__NEW_MODEL_SET = CHANGE_FEATURE_COUNT + 1; + + /** + * The number of structural features of the '<em>Model Set Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE_FEATURE_COUNT = CHANGE_FEATURE_COUNT + 2; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_MODEL_SET_CHANGE = CHANGE___GET_MODEL_SET_CHANGE; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_OLD_MODEL_SET = CHANGE___GET_OLD_MODEL_SET; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE___GET_NEW_MODEL_SET = CHANGE___GET_NEW_MODEL_SET; + + /** + * The number of operations of the '<em>Model Set Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MODEL_SET_CHANGE_OPERATION_COUNT = CHANGE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl <em>Element Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getElementChange() + * @generated + */ + int ELEMENT_CHANGE = 6; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__PARENT = CHANGE__PARENT; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__CHILDREN = CHANGE__CHILDREN; + + /** + * The feature id for the '<em><b>Old Element</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__OLD_ELEMENT = CHANGE_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>New Element</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__NEW_ELEMENT = CHANGE_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Kind</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE__KIND = CHANGE_FEATURE_COUNT + 2; + + /** + * The number of structural features of the '<em>Element Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE_FEATURE_COUNT = CHANGE_FEATURE_COUNT + 3; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_MODEL_SET_CHANGE = CHANGE___GET_MODEL_SET_CHANGE; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_OLD_MODEL_SET = CHANGE___GET_OLD_MODEL_SET; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_NEW_MODEL_SET = CHANGE___GET_NEW_MODEL_SET; + + /** + * The operation id for the '<em>Get Element</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE___GET_ELEMENT = CHANGE_OPERATION_COUNT + 0; + + /** + * The number of operations of the '<em>Element Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int ELEMENT_CHANGE_OPERATION_COUNT = CHANGE_OPERATION_COUNT + 1; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl <em>Property Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getPropertyChange() + * @generated + */ + int PROPERTY_CHANGE = 7; + + /** + * The feature id for the '<em><b>Parent</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__PARENT = CHANGE__PARENT; + + /** + * The feature id for the '<em><b>Children</b></em>' containment reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__CHILDREN = CHANGE__CHILDREN; + + /** + * The feature id for the '<em><b>Feature</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__FEATURE = CHANGE_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>Old Value</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__OLD_VALUE = CHANGE_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>New Value</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__NEW_VALUE = CHANGE_FEATURE_COUNT + 2; + + /** + * The feature id for the '<em><b>Kind</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE__KIND = CHANGE_FEATURE_COUNT + 3; + + /** + * The number of structural features of the '<em>Property Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE_FEATURE_COUNT = CHANGE_FEATURE_COUNT + 4; + + /** + * The operation id for the '<em>Get Model Set Change</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_MODEL_SET_CHANGE = CHANGE___GET_MODEL_SET_CHANGE; + + /** + * The operation id for the '<em>Get Old Element For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get New Elements For</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT; + + /** + * The operation id for the '<em>Get Old Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_OLD_MODEL_SET = CHANGE___GET_OLD_MODEL_SET; + + /** + * The operation id for the '<em>Get New Model Set</em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE___GET_NEW_MODEL_SET = CHANGE___GET_NEW_MODEL_SET; + + /** + * The number of operations of the '<em>Property Change</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int PROPERTY_CHANGE_OPERATION_COUNT = CHANGE_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.MigrationImpl <em>Migration</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.MigrationImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getMigration() + * @generated + */ + int MIGRATION = 8; + + /** + * The feature id for the '<em><b>Model Set</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MIGRATION__MODEL_SET = 0; + + /** + * The feature id for the '<em><b>Diagnostic ID</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MIGRATION__DIAGNOSTIC_ID = 1; + + /** + * The number of structural features of the '<em>Migration</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MIGRATION_FEATURE_COUNT = 2; + + /** + * The number of operations of the '<em>Migration</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int MIGRATION_OPERATION_COUNT = 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.impl.FeaturePathMigrationImpl <em>Feature Path Migration</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.FeaturePathMigrationImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getFeaturePathMigration() + * @generated + */ + int FEATURE_PATH_MIGRATION = 9; + + /** + * The feature id for the '<em><b>Model Set</b></em>' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FEATURE_PATH_MIGRATION__MODEL_SET = MIGRATION__MODEL_SET; + + /** + * The feature id for the '<em><b>Diagnostic ID</b></em>' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FEATURE_PATH_MIGRATION__DIAGNOSTIC_ID = MIGRATION__DIAGNOSTIC_ID; + + /** + * The feature id for the '<em><b>From Class</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FEATURE_PATH_MIGRATION__FROM_CLASS = MIGRATION_FEATURE_COUNT + 0; + + /** + * The feature id for the '<em><b>To Class</b></em>' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FEATURE_PATH_MIGRATION__TO_CLASS = MIGRATION_FEATURE_COUNT + 1; + + /** + * The feature id for the '<em><b>Feature Path</b></em>' reference list. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FEATURE_PATH_MIGRATION__FEATURE_PATH = MIGRATION_FEATURE_COUNT + 2; + + /** + * The number of structural features of the '<em>Feature Path Migration</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FEATURE_PATH_MIGRATION_FEATURE_COUNT = MIGRATION_FEATURE_COUNT + 3; + + /** + * The number of operations of the '<em>Feature Path Migration</em>' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + * @ordered + */ + int FEATURE_PATH_MIGRATION_OPERATION_COUNT = MIGRATION_OPERATION_COUNT + 0; + + /** + * The meta object id for the '{@link org.eclipse.emf.cdo.evolution.ChangeKind <em>Change Kind</em>}' enum. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.ChangeKind + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getChangeKind() + * @generated + */ + int CHANGE_KIND = 10; + + /** + * The meta object id for the '<em>URI</em>' data type. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.common.util.URI + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getURI() + * @generated + */ + int URI = 11; + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.ModelSet <em>Model Set</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Model Set</em>'. + * @see org.eclipse.emf.cdo.evolution.ModelSet + * @generated + */ + EClass getModelSet(); + + /** + * Returns the meta object for the containment reference '{@link org.eclipse.emf.cdo.evolution.ModelSet#getChange <em>Change</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference '<em>Change</em>'. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getChange() + * @see #getModelSet() + * @generated + */ + EReference getModelSet_Change(); + + /** + * Returns the meta object for the containment reference list '{@link org.eclipse.emf.cdo.evolution.ModelSet#getMigrations <em>Migrations</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Migrations</em>'. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getMigrations() + * @see #getModelSet() + * @generated + */ + EReference getModelSet_Migrations(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getEvolution() <em>Get Evolution</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Evolution</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getEvolution() + * @generated + */ + EOperation getModelSet__GetEvolution(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getVersion() <em>Get Version</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Version</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getVersion() + * @generated + */ + EOperation getModelSet__GetVersion(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getPreviousRelease() <em>Get Previous Release</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Previous Release</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getPreviousRelease() + * @generated + */ + EOperation getModelSet__GetPreviousRelease(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getRootPackages() <em>Get Root Packages</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Root Packages</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getRootPackages() + * @generated + */ + EOperation getModelSet__GetRootPackages(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getAllPackages() <em>Get All Packages</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get All Packages</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getAllPackages() + * @generated + */ + EOperation getModelSet__GetAllPackages(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#containsElement(org.eclipse.emf.ecore.EModelElement) <em>Contains Element</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Contains Element</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#containsElement(org.eclipse.emf.ecore.EModelElement) + * @generated + */ + EOperation getModelSet__ContainsElement__EModelElement(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getElement(java.lang.String) <em>Get Element</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Element</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getElement(java.lang.String) + * @generated + */ + EOperation getModelSet__GetElement__String(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getElementID(org.eclipse.emf.ecore.EModelElement) <em>Get Element ID</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Element ID</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getElementID(org.eclipse.emf.ecore.EModelElement) + * @generated + */ + EOperation getModelSet__GetElementID__EModelElement(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getElementID(org.eclipse.emf.ecore.EModelElement, boolean) <em>Get Element ID</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Element ID</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getElementID(org.eclipse.emf.ecore.EModelElement, boolean) + * @generated + */ + EOperation getModelSet__GetElementID__EModelElement_boolean(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#compare(org.eclipse.emf.cdo.evolution.ModelSet) <em>Compare</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Compare</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#compare(org.eclipse.emf.cdo.evolution.ModelSet) + * @generated + */ + EOperation getModelSet__Compare__ModelSet(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getMigration(java.lang.String) <em>Get Migration</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Migration</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ModelSet#getMigration(java.lang.String) + * @generated + */ + EOperation getModelSet__GetMigration__String(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.Model <em>Model</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Model</em>'. + * @see org.eclipse.emf.cdo.evolution.Model + * @generated + */ + EClass getModel(); + + /** + * Returns the meta object for the container reference '{@link org.eclipse.emf.cdo.evolution.Model#getEvolution <em>Evolution</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the container reference '<em>Evolution</em>'. + * @see org.eclipse.emf.cdo.evolution.Model#getEvolution() + * @see #getModel() + * @generated + */ + EReference getModel_Evolution(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Model#getURI <em>URI</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>URI</em>'. + * @see org.eclipse.emf.cdo.evolution.Model#getURI() + * @see #getModel() + * @generated + */ + EAttribute getModel_URI(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.Model#getRootPackage <em>Root Package</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Root Package</em>'. + * @see org.eclipse.emf.cdo.evolution.Model#getRootPackage() + * @see #getModel() + * @generated + */ + EReference getModel_RootPackage(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Model#getAllPackages <em>All Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>All Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Model#getAllPackages() + * @see #getModel() + * @generated + */ + EReference getModel_AllPackages(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Model#getReferencedPackages <em>Referenced Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>Referenced Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Model#getReferencedPackages() + * @see #getModel() + * @generated + */ + EReference getModel_ReferencedPackages(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Model#getMissingPackages <em>Missing Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>Missing Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Model#getMissingPackages() + * @see #getModel() + * @generated + */ + EReference getModel_MissingPackages(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.Evolution <em>Evolution</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Evolution</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution + * @generated + */ + EClass getEvolution(); + + /** + * Returns the meta object for the containment reference list '{@link org.eclipse.emf.cdo.evolution.Evolution#getModels <em>Models</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Models</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getModels() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_Models(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEcorePackage <em>Use Ecore Package</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Use Ecore Package</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#isUseEcorePackage() + * @see #getEvolution() + * @generated + */ + EAttribute getEvolution_UseEcorePackage(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEresourcePackage <em>Use Eresource Package</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Use Eresource Package</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#isUseEresourcePackage() + * @see #getEvolution() + * @generated + */ + EAttribute getEvolution_UseEresourcePackage(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Evolution#isUseEtypesPackage <em>Use Etypes Package</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Use Etypes Package</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#isUseEtypesPackage() + * @see #getEvolution() + * @generated + */ + EAttribute getEvolution_UseEtypesPackage(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Evolution#isUniqueNamespaces <em>Unique Namespaces</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Unique Namespaces</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#isUniqueNamespaces() + * @see #getEvolution() + * @generated + */ + EAttribute getEvolution_UniqueNamespaces(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Evolution#getRootPackages <em>Root Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>Root Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getRootPackages() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_RootPackages(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Evolution#getAllPackages <em>All Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>All Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getAllPackages() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_AllPackages(); + + /** + * Returns the meta object for the containment reference list '{@link org.eclipse.emf.cdo.evolution.Evolution#getReleases <em>Releases</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Releases</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getReleases() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_Releases(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Evolution#getOrderedReleases <em>Ordered Releases</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>Ordered Releases</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getOrderedReleases() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_OrderedReleases(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.Evolution#getLatestRelease <em>Latest Release</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Latest Release</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getLatestRelease() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_LatestRelease(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Evolution#getNextReleaseVersion <em>Next Release Version</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Next Release Version</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getNextReleaseVersion() + * @see #getEvolution() + * @generated + */ + EAttribute getEvolution_NextReleaseVersion(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Evolution#getMissingPackages <em>Missing Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>Missing Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Evolution#getMissingPackages() + * @see #getEvolution() + * @generated + */ + EReference getEvolution_MissingPackages(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Evolution#getRelease(int) <em>Get Release</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Release</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Evolution#getRelease(int) + * @generated + */ + EOperation getEvolution__GetRelease__int(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.Release <em>Release</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Release</em>'. + * @see org.eclipse.emf.cdo.evolution.Release + * @generated + */ + EClass getRelease(); + + /** + * Returns the meta object for the container reference '{@link org.eclipse.emf.cdo.evolution.Release#getEvolution <em>Evolution</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the container reference '<em>Evolution</em>'. + * @see org.eclipse.emf.cdo.evolution.Release#getEvolution() + * @see #getRelease() + * @generated + */ + EReference getRelease_Evolution(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Release#getDate <em>Date</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Date</em>'. + * @see org.eclipse.emf.cdo.evolution.Release#getDate() + * @see #getRelease() + * @generated + */ + EAttribute getRelease_Date(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.Release#getNextRelease <em>Next Release</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Next Release</em>'. + * @see org.eclipse.emf.cdo.evolution.Release#getNextRelease() + * @see #getRelease() + * @generated + */ + EReference getRelease_NextRelease(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.Release#getPreviousRelease <em>Previous Release</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Previous Release</em>'. + * @see org.eclipse.emf.cdo.evolution.Release#getPreviousRelease() + * @see #getRelease() + * @generated + */ + EReference getRelease_PreviousRelease(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Release#getVersion <em>Version</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Version</em>'. + * @see org.eclipse.emf.cdo.evolution.Release#getVersion() + * @see #getRelease() + * @generated + */ + EAttribute getRelease_Version(); + + /** + * Returns the meta object for the containment reference list '{@link org.eclipse.emf.cdo.evolution.Release#getRootPackages <em>Root Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Root Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Release#getRootPackages() + * @see #getRelease() + * @generated + */ + EReference getRelease_RootPackages(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.Release#getAllPackages <em>All Packages</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>All Packages</em>'. + * @see org.eclipse.emf.cdo.evolution.Release#getAllPackages() + * @see #getRelease() + * @generated + */ + EReference getRelease_AllPackages(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.Change <em>Change</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Change</em>'. + * @see org.eclipse.emf.cdo.evolution.Change + * @generated + */ + EClass getChange(); + + /** + * Returns the meta object for the container reference '{@link org.eclipse.emf.cdo.evolution.Change#getParent <em>Parent</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the container reference '<em>Parent</em>'. + * @see org.eclipse.emf.cdo.evolution.Change#getParent() + * @see #getChange() + * @generated + */ + EReference getChange_Parent(); + + /** + * Returns the meta object for the containment reference list '{@link org.eclipse.emf.cdo.evolution.Change#getChildren <em>Children</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the containment reference list '<em>Children</em>'. + * @see org.eclipse.emf.cdo.evolution.Change#getChildren() + * @see #getChange() + * @generated + */ + EReference getChange_Children(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Change#getOldModelSet() <em>Get Old Model Set</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Old Model Set</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Change#getOldModelSet() + * @generated + */ + EOperation getChange__GetOldModelSet(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Change#getNewModelSet() <em>Get New Model Set</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get New Model Set</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Change#getNewModelSet() + * @generated + */ + EOperation getChange__GetNewModelSet(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Change#getModelSetChange() <em>Get Model Set Change</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Model Set Change</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Change#getModelSetChange() + * @generated + */ + EOperation getChange__GetModelSetChange(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Change#getOldElementFor(org.eclipse.emf.ecore.EModelElement) <em>Get Old Element For</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Old Element For</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Change#getOldElementFor(org.eclipse.emf.ecore.EModelElement) + * @generated + */ + EOperation getChange__GetOldElementFor__EModelElement(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.Change#getNewElementsFor(org.eclipse.emf.ecore.EModelElement) <em>Get New Elements For</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get New Elements For</em>' operation. + * @see org.eclipse.emf.cdo.evolution.Change#getNewElementsFor(org.eclipse.emf.ecore.EModelElement) + * @generated + */ + EOperation getChange__GetNewElementsFor__EModelElement(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.ModelSetChange <em>Model Set Change</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Model Set Change</em>'. + * @see org.eclipse.emf.cdo.evolution.ModelSetChange + * @generated + */ + EClass getModelSetChange(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.ModelSetChange#getOldModelSet <em>Old Model Set</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Old Model Set</em>'. + * @see org.eclipse.emf.cdo.evolution.ModelSetChange#getOldModelSet() + * @see #getModelSetChange() + * @generated + */ + EReference getModelSetChange_OldModelSet(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.ModelSetChange#getNewModelSet <em>New Model Set</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>New Model Set</em>'. + * @see org.eclipse.emf.cdo.evolution.ModelSetChange#getNewModelSet() + * @see #getModelSetChange() + * @generated + */ + EReference getModelSetChange_NewModelSet(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.ElementChange <em>Element Change</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Element Change</em>'. + * @see org.eclipse.emf.cdo.evolution.ElementChange + * @generated + */ + EClass getElementChange(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.ElementChange#getOldElement <em>Old Element</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Old Element</em>'. + * @see org.eclipse.emf.cdo.evolution.ElementChange#getOldElement() + * @see #getElementChange() + * @generated + */ + EReference getElementChange_OldElement(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.ElementChange#getNewElement <em>New Element</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>New Element</em>'. + * @see org.eclipse.emf.cdo.evolution.ElementChange#getNewElement() + * @see #getElementChange() + * @generated + */ + EReference getElementChange_NewElement(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.ElementChange#getKind <em>Kind</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Kind</em>'. + * @see org.eclipse.emf.cdo.evolution.ElementChange#getKind() + * @see #getElementChange() + * @generated + */ + EAttribute getElementChange_Kind(); + + /** + * Returns the meta object for the '{@link org.eclipse.emf.cdo.evolution.ElementChange#getElement() <em>Get Element</em>}' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the '<em>Get Element</em>' operation. + * @see org.eclipse.emf.cdo.evolution.ElementChange#getElement() + * @generated + */ + EOperation getElementChange__GetElement(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.PropertyChange <em>Property Change</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Property Change</em>'. + * @see org.eclipse.emf.cdo.evolution.PropertyChange + * @generated + */ + EClass getPropertyChange(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.PropertyChange#getFeature <em>Feature</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>Feature</em>'. + * @see org.eclipse.emf.cdo.evolution.PropertyChange#getFeature() + * @see #getPropertyChange() + * @generated + */ + EReference getPropertyChange_Feature(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.PropertyChange#getOldValue <em>Old Value</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Old Value</em>'. + * @see org.eclipse.emf.cdo.evolution.PropertyChange#getOldValue() + * @see #getPropertyChange() + * @generated + */ + EAttribute getPropertyChange_OldValue(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.PropertyChange#getNewValue <em>New Value</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>New Value</em>'. + * @see org.eclipse.emf.cdo.evolution.PropertyChange#getNewValue() + * @see #getPropertyChange() + * @generated + */ + EAttribute getPropertyChange_NewValue(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.PropertyChange#getKind <em>Kind</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Kind</em>'. + * @see org.eclipse.emf.cdo.evolution.PropertyChange#getKind() + * @see #getPropertyChange() + * @generated + */ + EAttribute getPropertyChange_Kind(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.Migration <em>Migration</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Migration</em>'. + * @see org.eclipse.emf.cdo.evolution.Migration + * @generated + */ + EClass getMigration(); + + /** + * Returns the meta object for the container reference '{@link org.eclipse.emf.cdo.evolution.Migration#getModelSet <em>Model Set</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the container reference '<em>Model Set</em>'. + * @see org.eclipse.emf.cdo.evolution.Migration#getModelSet() + * @see #getMigration() + * @generated + */ + EReference getMigration_ModelSet(); + + /** + * Returns the meta object for the attribute '{@link org.eclipse.emf.cdo.evolution.Migration#getDiagnosticID <em>Diagnostic ID</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the attribute '<em>Diagnostic ID</em>'. + * @see org.eclipse.emf.cdo.evolution.Migration#getDiagnosticID() + * @see #getMigration() + * @generated + */ + EAttribute getMigration_DiagnosticID(); + + /** + * Returns the meta object for class '{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration <em>Feature Path Migration</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for class '<em>Feature Path Migration</em>'. + * @see org.eclipse.emf.cdo.evolution.FeaturePathMigration + * @generated + */ + EClass getFeaturePathMigration(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getFromClass <em>From Class</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>From Class</em>'. + * @see org.eclipse.emf.cdo.evolution.FeaturePathMigration#getFromClass() + * @see #getFeaturePathMigration() + * @generated + */ + EReference getFeaturePathMigration_FromClass(); + + /** + * Returns the meta object for the reference '{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getToClass <em>To Class</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference '<em>To Class</em>'. + * @see org.eclipse.emf.cdo.evolution.FeaturePathMigration#getToClass() + * @see #getFeaturePathMigration() + * @generated + */ + EReference getFeaturePathMigration_ToClass(); + + /** + * Returns the meta object for the reference list '{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getFeaturePath <em>Feature Path</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for the reference list '<em>Feature Path</em>'. + * @see org.eclipse.emf.cdo.evolution.FeaturePathMigration#getFeaturePath() + * @see #getFeaturePathMigration() + * @generated + */ + EReference getFeaturePathMigration_FeaturePath(); + + /** + * Returns the meta object for enum '{@link org.eclipse.emf.cdo.evolution.ChangeKind <em>Change Kind</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for enum '<em>Change Kind</em>'. + * @see org.eclipse.emf.cdo.evolution.ChangeKind + * @generated + */ + EEnum getChangeKind(); + + /** + * Returns the meta object for data type '{@link org.eclipse.emf.common.util.URI <em>URI</em>}'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the meta object for data type '<em>URI</em>'. + * @see org.eclipse.emf.common.util.URI + * @model instanceClass="org.eclipse.emf.common.util.URI" + * @generated + */ + EDataType getURI(); + + /** + * Returns the factory that creates the instances of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the factory that creates the instances of the model. + * @generated + */ + EvolutionFactory getEvolutionFactory(); + + /** + * <!-- begin-user-doc --> + * Defines literals for the meta objects that represent + * <ul> + * <li>each class,</li> + * <li>each feature of each class,</li> + * <li>each operation of each class,</li> + * <li>each enum,</li> + * <li>and each data type</li> + * </ul> + * <!-- end-user-doc --> + * @generated + */ + interface Literals + { + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelSetImpl <em>Model Set</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelSetImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModelSet() + * @generated + */ + EClass MODEL_SET = eINSTANCE.getModelSet(); + + /** + * The meta object literal for the '<em><b>Change</b></em>' containment reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL_SET__CHANGE = eINSTANCE.getModelSet_Change(); + + /** + * The meta object literal for the '<em><b>Migrations</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL_SET__MIGRATIONS = eINSTANCE.getModelSet_Migrations(); + + /** + * The meta object literal for the '<em><b>Get Evolution</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_EVOLUTION = eINSTANCE.getModelSet__GetEvolution(); + + /** + * The meta object literal for the '<em><b>Get Version</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_VERSION = eINSTANCE.getModelSet__GetVersion(); + + /** + * The meta object literal for the '<em><b>Get Previous Release</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_PREVIOUS_RELEASE = eINSTANCE.getModelSet__GetPreviousRelease(); + + /** + * The meta object literal for the '<em><b>Get Root Packages</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_ROOT_PACKAGES = eINSTANCE.getModelSet__GetRootPackages(); + + /** + * The meta object literal for the '<em><b>Get All Packages</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_ALL_PACKAGES = eINSTANCE.getModelSet__GetAllPackages(); + + /** + * The meta object literal for the '<em><b>Contains Element</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT = eINSTANCE.getModelSet__ContainsElement__EModelElement(); + + /** + * The meta object literal for the '<em><b>Get Element</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_ELEMENT__STRING = eINSTANCE.getModelSet__GetElement__String(); + + /** + * The meta object literal for the '<em><b>Get Element ID</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT = eINSTANCE.getModelSet__GetElementID__EModelElement(); + + /** + * The meta object literal for the '<em><b>Get Element ID</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN = eINSTANCE.getModelSet__GetElementID__EModelElement_boolean(); + + /** + * The meta object literal for the '<em><b>Compare</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___COMPARE__MODELSET = eINSTANCE.getModelSet__Compare__ModelSet(); + + /** + * The meta object literal for the '<em><b>Get Migration</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation MODEL_SET___GET_MIGRATION__STRING = eINSTANCE.getModelSet__GetMigration__String(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl <em>Model</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModel() + * @generated + */ + EClass MODEL = eINSTANCE.getModel(); + + /** + * The meta object literal for the '<em><b>Evolution</b></em>' container reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL__EVOLUTION = eINSTANCE.getModel_Evolution(); + + /** + * The meta object literal for the '<em><b>URI</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute MODEL__URI = eINSTANCE.getModel_URI(); + + /** + * The meta object literal for the '<em><b>Root Package</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL__ROOT_PACKAGE = eINSTANCE.getModel_RootPackage(); + + /** + * The meta object literal for the '<em><b>All Packages</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL__ALL_PACKAGES = eINSTANCE.getModel_AllPackages(); + + /** + * The meta object literal for the '<em><b>Referenced Packages</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL__REFERENCED_PACKAGES = eINSTANCE.getModel_ReferencedPackages(); + + /** + * The meta object literal for the '<em><b>Missing Packages</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL__MISSING_PACKAGES = eINSTANCE.getModel_MissingPackages(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl <em>Evolution</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getEvolution() + * @generated + */ + EClass EVOLUTION = eINSTANCE.getEvolution(); + + /** + * The meta object literal for the '<em><b>Models</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__MODELS = eINSTANCE.getEvolution_Models(); + + /** + * The meta object literal for the '<em><b>Use Ecore Package</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EVOLUTION__USE_ECORE_PACKAGE = eINSTANCE.getEvolution_UseEcorePackage(); + + /** + * The meta object literal for the '<em><b>Use Eresource Package</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EVOLUTION__USE_ERESOURCE_PACKAGE = eINSTANCE.getEvolution_UseEresourcePackage(); + + /** + * The meta object literal for the '<em><b>Use Etypes Package</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EVOLUTION__USE_ETYPES_PACKAGE = eINSTANCE.getEvolution_UseEtypesPackage(); + + /** + * The meta object literal for the '<em><b>Unique Namespaces</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EVOLUTION__UNIQUE_NAMESPACES = eINSTANCE.getEvolution_UniqueNamespaces(); + + /** + * The meta object literal for the '<em><b>Root Packages</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__ROOT_PACKAGES = eINSTANCE.getEvolution_RootPackages(); + + /** + * The meta object literal for the '<em><b>All Packages</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__ALL_PACKAGES = eINSTANCE.getEvolution_AllPackages(); + + /** + * The meta object literal for the '<em><b>Releases</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__RELEASES = eINSTANCE.getEvolution_Releases(); + + /** + * The meta object literal for the '<em><b>Ordered Releases</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__ORDERED_RELEASES = eINSTANCE.getEvolution_OrderedReleases(); + + /** + * The meta object literal for the '<em><b>Latest Release</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__LATEST_RELEASE = eINSTANCE.getEvolution_LatestRelease(); + + /** + * The meta object literal for the '<em><b>Next Release Version</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute EVOLUTION__NEXT_RELEASE_VERSION = eINSTANCE.getEvolution_NextReleaseVersion(); + + /** + * The meta object literal for the '<em><b>Missing Packages</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference EVOLUTION__MISSING_PACKAGES = eINSTANCE.getEvolution_MissingPackages(); + + /** + * The meta object literal for the '<em><b>Get Release</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation EVOLUTION___GET_RELEASE__INT = eINSTANCE.getEvolution__GetRelease__int(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl <em>Release</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ReleaseImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getRelease() + * @generated + */ + EClass RELEASE = eINSTANCE.getRelease(); + + /** + * The meta object literal for the '<em><b>Evolution</b></em>' container reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference RELEASE__EVOLUTION = eINSTANCE.getRelease_Evolution(); + + /** + * The meta object literal for the '<em><b>Date</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute RELEASE__DATE = eINSTANCE.getRelease_Date(); + + /** + * The meta object literal for the '<em><b>Next Release</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference RELEASE__NEXT_RELEASE = eINSTANCE.getRelease_NextRelease(); + + /** + * The meta object literal for the '<em><b>Previous Release</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference RELEASE__PREVIOUS_RELEASE = eINSTANCE.getRelease_PreviousRelease(); + + /** + * The meta object literal for the '<em><b>Version</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute RELEASE__VERSION = eINSTANCE.getRelease_Version(); + + /** + * The meta object literal for the '<em><b>Root Packages</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference RELEASE__ROOT_PACKAGES = eINSTANCE.getRelease_RootPackages(); + + /** + * The meta object literal for the '<em><b>All Packages</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference RELEASE__ALL_PACKAGES = eINSTANCE.getRelease_AllPackages(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.ChangeImpl <em>Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getChange() + * @generated + */ + EClass CHANGE = eINSTANCE.getChange(); + + /** + * The meta object literal for the '<em><b>Parent</b></em>' container reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference CHANGE__PARENT = eINSTANCE.getChange_Parent(); + + /** + * The meta object literal for the '<em><b>Children</b></em>' containment reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference CHANGE__CHILDREN = eINSTANCE.getChange_Children(); + + /** + * The meta object literal for the '<em><b>Get Old Model Set</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation CHANGE___GET_OLD_MODEL_SET = eINSTANCE.getChange__GetOldModelSet(); + + /** + * The meta object literal for the '<em><b>Get New Model Set</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation CHANGE___GET_NEW_MODEL_SET = eINSTANCE.getChange__GetNewModelSet(); + + /** + * The meta object literal for the '<em><b>Get Model Set Change</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation CHANGE___GET_MODEL_SET_CHANGE = eINSTANCE.getChange__GetModelSetChange(); + + /** + * The meta object literal for the '<em><b>Get Old Element For</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT = eINSTANCE.getChange__GetOldElementFor__EModelElement(); + + /** + * The meta object literal for the '<em><b>Get New Elements For</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT = eINSTANCE.getChange__GetNewElementsFor__EModelElement(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl <em>Model Set Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getModelSetChange() + * @generated + */ + EClass MODEL_SET_CHANGE = eINSTANCE.getModelSetChange(); + + /** + * The meta object literal for the '<em><b>Old Model Set</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL_SET_CHANGE__OLD_MODEL_SET = eINSTANCE.getModelSetChange_OldModelSet(); + + /** + * The meta object literal for the '<em><b>New Model Set</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MODEL_SET_CHANGE__NEW_MODEL_SET = eINSTANCE.getModelSetChange_NewModelSet(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl <em>Element Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getElementChange() + * @generated + */ + EClass ELEMENT_CHANGE = eINSTANCE.getElementChange(); + + /** + * The meta object literal for the '<em><b>Old Element</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference ELEMENT_CHANGE__OLD_ELEMENT = eINSTANCE.getElementChange_OldElement(); + + /** + * The meta object literal for the '<em><b>New Element</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference ELEMENT_CHANGE__NEW_ELEMENT = eINSTANCE.getElementChange_NewElement(); + + /** + * The meta object literal for the '<em><b>Kind</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute ELEMENT_CHANGE__KIND = eINSTANCE.getElementChange_Kind(); + + /** + * The meta object literal for the '<em><b>Get Element</b></em>' operation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EOperation ELEMENT_CHANGE___GET_ELEMENT = eINSTANCE.getElementChange__GetElement(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl <em>Property Change</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getPropertyChange() + * @generated + */ + EClass PROPERTY_CHANGE = eINSTANCE.getPropertyChange(); + + /** + * The meta object literal for the '<em><b>Feature</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference PROPERTY_CHANGE__FEATURE = eINSTANCE.getPropertyChange_Feature(); + + /** + * The meta object literal for the '<em><b>Old Value</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute PROPERTY_CHANGE__OLD_VALUE = eINSTANCE.getPropertyChange_OldValue(); + + /** + * The meta object literal for the '<em><b>New Value</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute PROPERTY_CHANGE__NEW_VALUE = eINSTANCE.getPropertyChange_NewValue(); + + /** + * The meta object literal for the '<em><b>Kind</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute PROPERTY_CHANGE__KIND = eINSTANCE.getPropertyChange_Kind(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.MigrationImpl <em>Migration</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.MigrationImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getMigration() + * @generated + */ + EClass MIGRATION = eINSTANCE.getMigration(); + + /** + * The meta object literal for the '<em><b>Model Set</b></em>' container reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference MIGRATION__MODEL_SET = eINSTANCE.getMigration_ModelSet(); + + /** + * The meta object literal for the '<em><b>Diagnostic ID</b></em>' attribute feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EAttribute MIGRATION__DIAGNOSTIC_ID = eINSTANCE.getMigration_DiagnosticID(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.impl.FeaturePathMigrationImpl <em>Feature Path Migration</em>}' class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.impl.FeaturePathMigrationImpl + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getFeaturePathMigration() + * @generated + */ + EClass FEATURE_PATH_MIGRATION = eINSTANCE.getFeaturePathMigration(); + + /** + * The meta object literal for the '<em><b>From Class</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference FEATURE_PATH_MIGRATION__FROM_CLASS = eINSTANCE.getFeaturePathMigration_FromClass(); + + /** + * The meta object literal for the '<em><b>To Class</b></em>' reference feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference FEATURE_PATH_MIGRATION__TO_CLASS = eINSTANCE.getFeaturePathMigration_ToClass(); + + /** + * The meta object literal for the '<em><b>Feature Path</b></em>' reference list feature. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + EReference FEATURE_PATH_MIGRATION__FEATURE_PATH = eINSTANCE.getFeaturePathMigration_FeaturePath(); + + /** + * The meta object literal for the '{@link org.eclipse.emf.cdo.evolution.ChangeKind <em>Change Kind</em>}' enum. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.ChangeKind + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getChangeKind() + * @generated + */ + EEnum CHANGE_KIND = eINSTANCE.getChangeKind(); + + /** + * The meta object literal for the '<em>URI</em>' data type. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.common.util.URI + * @see org.eclipse.emf.cdo.evolution.impl.EvolutionPackageImpl#getURI() + * @generated + */ + EDataType URI = eINSTANCE.getURI(); + + } + +} // EvolutionPackage diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/FeaturePathMigration.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/FeaturePathMigration.java new file mode 100644 index 0000000000..857f6b9440 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/FeaturePathMigration.java @@ -0,0 +1,97 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EReference; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Feature Path Migration</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getFromClass <em>From Class</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getToClass <em>To Class</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getFeaturePath <em>Feature Path</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getFeaturePathMigration() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='NewFeatureReachable'" + * @generated + */ +public interface FeaturePathMigration extends Migration +{ + /** + * Returns the value of the '<em><b>From Class</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>From Class</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>From Class</em>' reference. + * @see #setFromClass(EClass) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getFeaturePathMigration_FromClass() + * @model required="true" + * @generated + */ + EClass getFromClass(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getFromClass <em>From Class</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>From Class</em>' reference. + * @see #getFromClass() + * @generated + */ + void setFromClass(EClass value); + + /** + * Returns the value of the '<em><b>To Class</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>To Class</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>To Class</em>' reference. + * @see #setToClass(EClass) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getFeaturePathMigration_ToClass() + * @model required="true" + * @generated + */ + EClass getToClass(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration#getToClass <em>To Class</em>}' reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>To Class</em>' reference. + * @see #getToClass() + * @generated + */ + void setToClass(EClass value); + + /** + * Returns the value of the '<em><b>Feature Path</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EReference}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Feature Path</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Feature Path</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getFeaturePathMigration_FeaturePath() + * @model + * @generated + */ + EList<EReference> getFeaturePath(); + +} // FeaturePathMigration diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Migration.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Migration.java new file mode 100644 index 0000000000..6da9d95632 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Migration.java @@ -0,0 +1,82 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.cdo.CDOObject; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Migration</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.Migration#getModelSet <em>Model Set</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Migration#getDiagnosticID <em>Diagnostic ID</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getMigration() + * @model abstract="true" + * annotation="http://www.eclipse.org/emf/2002/Ecore constraints='NotObsolete'" + * @extends CDOObject + * @generated + */ +public interface Migration extends CDOObject +{ + /** + * Returns the value of the '<em><b>Model Set</b></em>' container reference. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.ModelSet#getMigrations <em>Migrations</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Model Set</em>' container reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Model Set</em>' container reference. + * @see #setModelSet(ModelSet) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getMigration_ModelSet() + * @see org.eclipse.emf.cdo.evolution.ModelSet#getMigrations + * @model opposite="migrations" transient="false" + * @generated + */ + ModelSet getModelSet(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Migration#getModelSet <em>Model Set</em>}' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Model Set</em>' container reference. + * @see #getModelSet() + * @generated + */ + void setModelSet(ModelSet value); + + /** + * Returns the value of the '<em><b>Diagnostic ID</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Diagnostic ID</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Diagnostic ID</em>' attribute. + * @see #setDiagnosticID(String) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getMigration_DiagnosticID() + * @model + * @generated + */ + String getDiagnosticID(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Migration#getDiagnosticID <em>Diagnostic ID</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Diagnostic ID</em>' attribute. + * @see #getDiagnosticID() + * @generated + */ + void setDiagnosticID(String value); + +} // Migration diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java new file mode 100644 index 0000000000..77ad5c8e4e --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Model.java @@ -0,0 +1,163 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.cdo.CDOObject; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EPackage; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Model</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.Model#getEvolution <em>Evolution</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Model#getURI <em>URI</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Model#getRootPackage <em>Root Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Model#getAllPackages <em>All Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Model#getReferencedPackages <em>Referenced Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Model#getMissingPackages <em>Missing Packages</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModel() + * @model annotation="http://www.eclipse.org/emf/2002/Ecore constraints='ModelLoaded IDs_Exist NamespaceReflectsChange'" + * @extends CDOObject + * @generated + */ +public interface Model extends CDOObject +{ + /** + * Returns the value of the '<em><b>Evolution</b></em>' container reference. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Evolution#getModels <em>Models</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Evolution</em>' container reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Evolution</em>' container reference. + * @see #setEvolution(Evolution) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModel_Evolution() + * @see org.eclipse.emf.cdo.evolution.Evolution#getModels + * @model opposite="models" required="true" transient="false" + * @generated + */ + Evolution getEvolution(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Model#getEvolution <em>Evolution</em>}' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Evolution</em>' container reference. + * @see #getEvolution() + * @generated + */ + void setEvolution(Evolution value); + + /** + * Returns the value of the '<em><b>URI</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>URI</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>URI</em>' attribute. + * @see #setURI(URI) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModel_URI() + * @model dataType="org.eclipse.emf.cdo.evolution.URI" + * extendedMetaData="kind='attribute' name='uri'" + * @generated + */ + URI getURI(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Model#getURI <em>URI</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>URI</em>' attribute. + * @see #getURI() + * @generated + */ + void setURI(URI value); + + /** + * Returns the value of the '<em><b>Root Package</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Root Package</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Root Package</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModel_RootPackage() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EPackage getRootPackage(); + + /** + * Returns the value of the '<em><b>All Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>All Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>All Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModel_AllPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getAllPackages(); + + /** + * Returns the value of the '<em><b>Referenced Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Referenced Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Referenced Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModel_ReferencedPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getReferencedPackages(); + + /** + * Returns the value of the '<em><b>Missing Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Missing Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Missing Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModel_MissingPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getMissingPackages(); + + public ModelStatus getStatus(); + + /** + * @author Eike Stepper + */ + public enum ModelStatus + { + NO_URI, NO_RESOURCE_SET, RESOURCE_NOT_FOUND, LOAD_PROBLEM, CONTENT_PROBLEM, OK + } + +} // Model diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java new file mode 100644 index 0000000000..9b4e61e5d5 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSet.java @@ -0,0 +1,163 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.cdo.CDOObject; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EPackage; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Model Set</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.ModelSet#getChange <em>Change</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.ModelSet#getMigrations <em>Migrations</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModelSet() + * @model abstract="true" + * @extends CDOObject + * @generated + */ +public interface ModelSet extends CDOObject +{ + /** + * Returns the value of the '<em><b>Change</b></em>' containment reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Change</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Change</em>' containment reference. + * @see #isSetChange() + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModelSet_Change() + * @model containment="true" unsettable="true" transient="true" derived="true" suppressedSetVisibility="true" suppressedUnsetVisibility="true" + * @generated + */ + ModelSetChange getChange(); + + /** + * Returns whether the value of the '{@link org.eclipse.emf.cdo.evolution.ModelSet#getChange <em>Change</em>}' containment reference is set. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return whether the value of the '<em>Change</em>' containment reference is set. + * @see #getChange() + * @generated + */ + boolean isSetChange(); + + /** + * Returns the value of the '<em><b>Migrations</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.cdo.evolution.Migration}. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Migration#getModelSet <em>Model Set</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Migrations</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Migrations</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModelSet_Migrations() + * @see org.eclipse.emf.cdo.evolution.Migration#getModelSet + * @model opposite="modelSet" containment="true" + * @generated + */ + EList<Migration> getMigrations(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + Evolution getEvolution(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + int getVersion(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + Release getPreviousRelease(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + EList<EPackage> getRootPackages(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model kind="operation" + * @generated + */ + EList<EPackage> getAllPackages(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + boolean containsElement(EModelElement modelElement); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + <T extends EModelElement> T getElement(String id); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + String getElementID(EModelElement modelElement); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + String getElementID(EModelElement modelElement, boolean considerOldIDs); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + ModelSetChange compare(ModelSet other); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @model + * @generated + */ + Migration getMigration(String diagnosticID); + +} // ModelSet diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSetChange.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSetChange.java new file mode 100644 index 0000000000..d17c62092b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/ModelSetChange.java @@ -0,0 +1,71 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.ecore.EModelElement; + +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Model Set Change</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.ModelSetChange#getOldModelSet <em>Old Model Set</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.ModelSetChange#getNewModelSet <em>New Model Set</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModelSetChange() + * @model + * @generated + */ +public interface ModelSetChange extends Change +{ + /** + * Returns the value of the '<em><b>Old Model Set</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Old Model Set</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Old Model Set</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModelSetChange_OldModelSet() + * @model suppressedSetVisibility="true" + * @generated + */ + ModelSet getOldModelSet(); + + /** + * Returns the value of the '<em><b>New Model Set</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>New Model Set</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>New Model Set</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getModelSetChange_NewModelSet() + * @model suppressedSetVisibility="true" + * @generated + */ + ModelSet getNewModelSet(); + + ModelSet[] getModelSetChain(); + + Map<EModelElement, ElementChange> getElementChanges(); + + Map<EModelElement, EModelElement> getNewToOldElements(); + + Map<EModelElement, Set<EModelElement>> getOldToNewElements(); + + Set<EModelElement> getAddedElements(); + + Set<EModelElement> getRemovedElements(); + +} // ModelSetChange diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/PropertyChange.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/PropertyChange.java new file mode 100644 index 0000000000..7aab3eae4b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/PropertyChange.java @@ -0,0 +1,90 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.ecore.EStructuralFeature; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Property Change</b></em>'. + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.PropertyChange#getFeature <em>Feature</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.PropertyChange#getOldValue <em>Old Value</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.PropertyChange#getNewValue <em>New Value</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.PropertyChange#getKind <em>Kind</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getPropertyChange() + * @model + * @generated + */ +public interface PropertyChange extends Change +{ + /** + * Returns the value of the '<em><b>Feature</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Feature</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Feature</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getPropertyChange_Feature() + * @model suppressedSetVisibility="true" + * @generated + */ + EStructuralFeature getFeature(); + + /** + * Returns the value of the '<em><b>Old Value</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Old Value</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Old Value</em>' attribute. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getPropertyChange_OldValue() + * @model suppressedSetVisibility="true" + * @generated + */ + Object getOldValue(); + + /** + * Returns the value of the '<em><b>New Value</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>New Value</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>New Value</em>' attribute. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getPropertyChange_NewValue() + * @model suppressedSetVisibility="true" + * @generated + */ + Object getNewValue(); + + /** + * Returns the value of the '<em><b>Kind</b></em>' attribute. + * The literals are from the enumeration {@link org.eclipse.emf.cdo.evolution.ChangeKind}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Kind</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Kind</em>' attribute. + * @see org.eclipse.emf.cdo.evolution.ChangeKind + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getPropertyChange_Kind() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + ChangeKind getKind(); + +} // PropertyChange diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java new file mode 100644 index 0000000000..ef07d0dfbb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/Release.java @@ -0,0 +1,177 @@ +/** + */ +package org.eclipse.emf.cdo.evolution; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EPackage; + +import java.util.Date; + +/** + * <!-- begin-user-doc --> + * A representation of the model object '<em><b>Release</b></em>'. + * @extends Comparable<Release> + * <!-- end-user-doc --> + * + * <p> + * The following features are supported: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.Release#getEvolution <em>Evolution</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Release#getVersion <em>Version</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Release#getDate <em>Date</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Release#getNextRelease <em>Next Release</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Release#getPreviousRelease <em>Previous Release</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Release#getRootPackages <em>Root Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.Release#getAllPackages <em>All Packages</em>}</li> + * </ul> + * + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease() + * @model + * @generated + */ +public interface Release extends ModelSet, Comparable<Release> +{ + /** + * Returns the value of the '<em><b>Evolution</b></em>' container reference. + * It is bidirectional and its opposite is '{@link org.eclipse.emf.cdo.evolution.Evolution#getReleases <em>Releases</em>}'. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Evolution</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Evolution</em>' container reference. + * @see #setEvolution(Evolution) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_Evolution() + * @see org.eclipse.emf.cdo.evolution.Evolution#getReleases + * @model opposite="releases" required="true" transient="false" + * @generated + */ + Evolution getEvolution(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Release#getEvolution <em>Evolution</em>}' container reference. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Evolution</em>' container reference. + * @see #getEvolution() + * @generated + */ + void setEvolution(Evolution value); + + /** + * Returns the value of the '<em><b>Date</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Date</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Date</em>' attribute. + * @see #setDate(Date) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_Date() + * @model required="true" + * @generated + */ + Date getDate(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Release#getDate <em>Date</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Date</em>' attribute. + * @see #getDate() + * @generated + */ + void setDate(Date value); + + /** + * Returns the value of the '<em><b>Next Release</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Next Release</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Next Release</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_NextRelease() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + Release getNextRelease(); + + /** + * Returns the value of the '<em><b>Previous Release</b></em>' reference. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Previous Release</em>' reference isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Previous Release</em>' reference. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_PreviousRelease() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + Release getPreviousRelease(); + + /** + * Returns the value of the '<em><b>Version</b></em>' attribute. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Version</em>' attribute isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Version</em>' attribute. + * @see #setVersion(int) + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_Version() + * @model required="true" + * @generated + */ + int getVersion(); + + /** + * Sets the value of the '{@link org.eclipse.emf.cdo.evolution.Release#getVersion <em>Version</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param value the new value of the '<em>Version</em>' attribute. + * @see #getVersion() + * @generated + */ + void setVersion(int value); + + /** + * Returns the value of the '<em><b>Root Packages</b></em>' containment reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>Root Packages</em>' containment reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>Root Packages</em>' containment reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_RootPackages() + * @model containment="true" + * @generated + */ + EList<EPackage> getRootPackages(); + + /** + * Returns the value of the '<em><b>All Packages</b></em>' reference list. + * The list contents are of type {@link org.eclipse.emf.ecore.EPackage}. + * <!-- begin-user-doc --> + * <p> + * If the meaning of the '<em>All Packages</em>' reference list isn't clear, + * there really should be more of a description here... + * </p> + * <!-- end-user-doc --> + * @return the value of the '<em>All Packages</em>' reference list. + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#getRelease_AllPackages() + * @model transient="true" changeable="false" volatile="true" derived="true" + * @generated + */ + EList<EPackage> getAllPackages(); + +} // Release diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ChangeImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ChangeImpl.java new file mode 100644 index 0000000000..eb877a9fc6 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ChangeImpl.java @@ -0,0 +1,349 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; + +import org.eclipse.emf.internal.cdo.CDOObjectImpl; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.BasicEList; +import org.eclipse.emf.common.util.ECollections; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.util.InternalEList; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Change</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ChangeImpl#getParent <em>Parent</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ChangeImpl#getChildren <em>Children</em>}</li> + * </ul> + * + * @generated + */ +public abstract class ChangeImpl extends CDOObjectImpl implements Change +{ + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ChangeImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.CHANGE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected int eStaticFeatureCount() + { + return 0; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Change getParent() + { + return (Change)eDynamicGet(EvolutionPackage.CHANGE__PARENT, EvolutionPackage.Literals.CHANGE__PARENT, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetParent(Change newParent, NotificationChain msgs) + { + msgs = eBasicSetContainer((InternalEObject)newParent, EvolutionPackage.CHANGE__PARENT, msgs); + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setParent(Change newParent) + { + eDynamicSet(EvolutionPackage.CHANGE__PARENT, EvolutionPackage.Literals.CHANGE__PARENT, newParent); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + public EList<Change> getChildren() + { + return (EList<Change>)eDynamicGet(EvolutionPackage.CHANGE__CHILDREN, EvolutionPackage.Literals.CHANGE__CHILDREN, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract ModelSet getOldModelSet(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract ModelSet getNewModelSet(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public ModelSetChange getModelSetChange() + { + Change parent = getParent(); + if (parent != null) + { + return parent.getModelSetChange(); + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EModelElement getOldElementFor(EModelElement newElement) + { + ModelSetChange modelSetChange = getModelSetChange(); + if (modelSetChange != null) + { + return modelSetChange.getNewToOldElements().get(newElement); + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EList<EModelElement> getNewElementsFor(EModelElement oldElement) + { + ModelSetChange modelSetChange = getModelSetChange(); + if (modelSetChange != null) + { + Set<EModelElement> newElements = modelSetChange.getOldToNewElements().get(oldElement); + if (newElements != null) + { + int size = newElements.size(); + if (size == 1) + { + return ECollections.singletonEList(newElements.iterator().next()); + } + + if (size > 1) + { + return new BasicEList<EModelElement>(newElements); + } + } + } + + return ECollections.emptyEList(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.CHANGE__PARENT: + if (eInternalContainer() != null) + { + msgs = eBasicRemoveFromContainer(msgs); + } + return basicSetParent((Change)otherEnd, msgs); + case EvolutionPackage.CHANGE__CHILDREN: + return ((InternalEList<InternalEObject>)(InternalEList<?>)getChildren()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.CHANGE__PARENT: + return basicSetParent(null, msgs); + case EvolutionPackage.CHANGE__CHILDREN: + return ((InternalEList<?>)getChildren()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) + { + switch (eContainerFeatureID()) + { + case EvolutionPackage.CHANGE__PARENT: + return eInternalContainer().eInverseRemove(this, EvolutionPackage.CHANGE__CHILDREN, Change.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.CHANGE__PARENT: + return getParent(); + case EvolutionPackage.CHANGE__CHILDREN: + return getChildren(); + } + 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 EvolutionPackage.CHANGE__PARENT: + setParent((Change)newValue); + return; + case EvolutionPackage.CHANGE__CHILDREN: + getChildren().clear(); + getChildren().addAll((Collection<? extends Change>)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.CHANGE__PARENT: + setParent((Change)null); + return; + case EvolutionPackage.CHANGE__CHILDREN: + getChildren().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.CHANGE__PARENT: + return getParent() != null; + case EvolutionPackage.CHANGE__CHILDREN: + return !getChildren().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 EvolutionPackage.CHANGE___GET_MODEL_SET_CHANGE: + return getModelSetChange(); + case EvolutionPackage.CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT: + return getOldElementFor((EModelElement)arguments.get(0)); + case EvolutionPackage.CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT: + return getNewElementsFor((EModelElement)arguments.get(0)); + case EvolutionPackage.CHANGE___GET_OLD_MODEL_SET: + return getOldModelSet(); + case EvolutionPackage.CHANGE___GET_NEW_MODEL_SET: + return getNewModelSet(); + } + return super.eInvoke(operationID, arguments); + } + +} // ChangeImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ElementChangeImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ElementChangeImpl.java new file mode 100644 index 0000000000..9789905356 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ElementChangeImpl.java @@ -0,0 +1,317 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.util.DiagnosticID; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; + +import java.lang.reflect.InvocationTargetException; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Element Change</b></em>'. + * @implements DiagnosticID.Provider + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl#getOldElement <em>Old Element</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl#getNewElement <em>New Element</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ElementChangeImpl#getKind <em>Kind</em>}</li> + * </ul> + * + * @generated + */ +public class ElementChangeImpl extends ChangeImpl implements ElementChange, DiagnosticID.Provider +{ + /** + * The default value of the '{@link #getKind() <em>Kind</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getKind() + * @generated + * @ordered + */ + protected static final ChangeKind KIND_EDEFAULT = ChangeKind.NONE; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ElementChangeImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.ELEMENT_CHANGE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EModelElement getOldElement() + { + return (EModelElement)eDynamicGet(EvolutionPackage.ELEMENT_CHANGE__OLD_ELEMENT, EvolutionPackage.Literals.ELEMENT_CHANGE__OLD_ELEMENT, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EModelElement basicGetOldElement() + { + return (EModelElement)eDynamicGet(EvolutionPackage.ELEMENT_CHANGE__OLD_ELEMENT, EvolutionPackage.Literals.ELEMENT_CHANGE__OLD_ELEMENT, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setOldElement(EModelElement newOldElement) + { + eDynamicSet(EvolutionPackage.ELEMENT_CHANGE__OLD_ELEMENT, EvolutionPackage.Literals.ELEMENT_CHANGE__OLD_ELEMENT, newOldElement); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EModelElement getNewElement() + { + return (EModelElement)eDynamicGet(EvolutionPackage.ELEMENT_CHANGE__NEW_ELEMENT, EvolutionPackage.Literals.ELEMENT_CHANGE__NEW_ELEMENT, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EModelElement basicGetNewElement() + { + return (EModelElement)eDynamicGet(EvolutionPackage.ELEMENT_CHANGE__NEW_ELEMENT, EvolutionPackage.Literals.ELEMENT_CHANGE__NEW_ELEMENT, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setNewElement(EModelElement newNewElement) + { + eDynamicSet(EvolutionPackage.ELEMENT_CHANGE__NEW_ELEMENT, EvolutionPackage.Literals.ELEMENT_CHANGE__NEW_ELEMENT, newNewElement); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ChangeKind getKind() + { + return (ChangeKind)eDynamicGet(EvolutionPackage.ELEMENT_CHANGE__KIND, EvolutionPackage.Literals.ELEMENT_CHANGE__KIND, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setKind(ChangeKind newKind) + { + eDynamicSet(EvolutionPackage.ELEMENT_CHANGE__KIND, EvolutionPackage.Literals.ELEMENT_CHANGE__KIND, newKind); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EModelElement getElement() + { + EModelElement element = getNewElement(); + if (element == null) + { + element = getOldElement(); + } + + return element; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.ELEMENT_CHANGE__OLD_ELEMENT: + if (resolve) + { + return getOldElement(); + } + return basicGetOldElement(); + case EvolutionPackage.ELEMENT_CHANGE__NEW_ELEMENT: + if (resolve) + { + return getNewElement(); + } + return basicGetNewElement(); + case EvolutionPackage.ELEMENT_CHANGE__KIND: + return getKind(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case EvolutionPackage.ELEMENT_CHANGE__OLD_ELEMENT: + setOldElement((EModelElement)newValue); + return; + case EvolutionPackage.ELEMENT_CHANGE__NEW_ELEMENT: + setNewElement((EModelElement)newValue); + return; + case EvolutionPackage.ELEMENT_CHANGE__KIND: + setKind((ChangeKind)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.ELEMENT_CHANGE__OLD_ELEMENT: + setOldElement((EModelElement)null); + return; + case EvolutionPackage.ELEMENT_CHANGE__NEW_ELEMENT: + setNewElement((EModelElement)null); + return; + case EvolutionPackage.ELEMENT_CHANGE__KIND: + setKind(KIND_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.ELEMENT_CHANGE__OLD_ELEMENT: + return basicGetOldElement() != null; + case EvolutionPackage.ELEMENT_CHANGE__NEW_ELEMENT: + return basicGetNewElement() != null; + case EvolutionPackage.ELEMENT_CHANGE__KIND: + return getKind() != KIND_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException + { + switch (operationID) + { + case EvolutionPackage.ELEMENT_CHANGE___GET_ELEMENT: + return getElement(); + } + return super.eInvoke(operationID, arguments); + } + + @Override + public ModelSet getOldModelSet() + { + Change parent = getParent(); + if (parent != null) + { + return parent.getOldModelSet(); + } + + return null; + } + + @Override + public ModelSet getNewModelSet() + { + Change parent = getParent(); + if (parent != null) + { + return parent.getNewModelSet(); + } + + return null; + } + + public void extractDiagnosticData(Context context) + { + context.add("EC"); + + EModelElement newElement = getNewElement(); + if (newElement != null) + { + context.add(IDAnnotation.getValue(newElement)); + } + + EModelElement oldElement = getOldElement(); + if (oldElement != null) + { + context.add(IDAnnotation.getValue(oldElement)); + } + + context.add(getKind().getName()); + } + +} // ElementChangeImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionFactoryImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionFactoryImpl.java new file mode 100644 index 0000000000..f50c7c98ea --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionFactoryImpl.java @@ -0,0 +1,352 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; +import org.eclipse.emf.cdo.evolution.PropertyChange; +import org.eclipse.emf.cdo.evolution.Release; + +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.impl.EFactoryImpl; +import org.eclipse.emf.ecore.plugin.EcorePlugin; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Factory</b>. + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionFactoryImpl extends EFactoryImpl implements EvolutionFactory +{ + /** + * Creates the default factory implementation. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static EvolutionFactory init() + { + try + { + EvolutionFactory theEvolutionFactory = (EvolutionFactory)EPackage.Registry.INSTANCE.getEFactory(EvolutionPackage.eNS_URI); + if (theEvolutionFactory != null) + { + return theEvolutionFactory; + } + } + catch (Exception exception) + { + EcorePlugin.INSTANCE.log(exception); + } + return new EvolutionFactoryImpl(); + } + + /** + * Creates an instance of the factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionFactoryImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public EObject create(EClass eClass) + { + switch (eClass.getClassifierID()) + { + case EvolutionPackage.MODEL: + return createModel(); + case EvolutionPackage.EVOLUTION: + return createEvolution(); + case EvolutionPackage.RELEASE: + return createRelease(); + case EvolutionPackage.MODEL_SET_CHANGE: + return createModelSetChange(); + case EvolutionPackage.ELEMENT_CHANGE: + return createElementChange(); + case EvolutionPackage.PROPERTY_CHANGE: + return createPropertyChange(); + case EvolutionPackage.FEATURE_PATH_MIGRATION: + return createFeaturePathMigration(); + default: + throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier"); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object createFromString(EDataType eDataType, String initialValue) + { + switch (eDataType.getClassifierID()) + { + case EvolutionPackage.CHANGE_KIND: + return createChangeKindFromString(eDataType, initialValue); + case EvolutionPackage.URI: + return createURIFromString(eDataType, initialValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public String convertToString(EDataType eDataType, Object instanceValue) + { + switch (eDataType.getClassifierID()) + { + case EvolutionPackage.CHANGE_KIND: + return convertChangeKindToString(eDataType, instanceValue); + case EvolutionPackage.URI: + return convertURIToString(eDataType, instanceValue); + default: + throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier"); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Model createModel() + { + ModelImpl model = new ModelImpl(); + return model; + } + + public Model createModel(URI uri) + { + ModelImpl model = new ModelImpl(); + model.setURI(uri); + return model; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Evolution createEvolution() + { + EvolutionImpl evolution = new EvolutionImpl(); + return evolution; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Release createRelease() + { + ReleaseImpl release = new ReleaseImpl(); + return release; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSetChange createModelSetChange() + { + ModelSetChangeImpl modelSetChange = new ModelSetChangeImpl(); + return modelSetChange; + } + + public ModelSetChange createModelSetChange(ModelSet[] modelSetChain) + { + ModelSetChangeImpl modelSetChange = new ModelSetChangeImpl(); + modelSetChange.setModelSetChain(modelSetChain); + return modelSetChange; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ElementChange createElementChange() + { + ElementChangeImpl elementChange = new ElementChangeImpl(); + return elementChange; + } + + public ElementChange createElementChange(EModelElement oldElement, EModelElement newElement, ChangeKind kind) + { + ElementChangeImpl elementChange = new ElementChangeImpl(); + elementChange.setOldElement(oldElement); + elementChange.setNewElement(newElement); + elementChange.setKind(kind); + return elementChange; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public PropertyChange createPropertyChange() + { + PropertyChangeImpl propertyChange = new PropertyChangeImpl(); + return propertyChange; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public FeaturePathMigration createFeaturePathMigration() + { + FeaturePathMigrationImpl featurePathMigration = new FeaturePathMigrationImpl(); + return featurePathMigration; + } + + public PropertyChange createPropertyChange(EStructuralFeature feature, Object oldValue, Object newValue) + { + PropertyChangeImpl propertyChange = new PropertyChangeImpl(); + propertyChange.setFeature(feature); + propertyChange.setOldValue(oldValue); + propertyChange.setNewValue(newValue); + return propertyChange; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ChangeKind createChangeKind(String literal) + { + ChangeKind result = ChangeKind.get(literal); + if (result == null) + { + throw new IllegalArgumentException("The value '" + literal + "' is not a valid enumerator of '" + EvolutionPackage.Literals.CHANGE_KIND.getName() + "'"); + } + return result; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ChangeKind createChangeKindFromString(EDataType eDataType, String initialValue) + { + return createChangeKind(initialValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String convertChangeKind(ChangeKind instanceValue) + { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String convertChangeKindToString(EDataType eDataType, Object instanceValue) + { + return convertChangeKind((ChangeKind)instanceValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public URI createURI(String literal) + { + return literal == null ? null : URI.createURI(literal); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public URI createURIFromString(EDataType eDataType, String initialValue) + { + return initialValue == null ? null : URI.createURI(initialValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public String convertURI(URI instanceValue) + { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public String convertURIToString(EDataType eDataType, Object instanceValue) + { + return instanceValue == null ? null : instanceValue.toString(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionPackage getEvolutionPackage() + { + return (EvolutionPackage)getEPackage(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @deprecated + * @generated + */ + @Deprecated + public static EvolutionPackage getPackage() + { + return EvolutionPackage.eINSTANCE; + } + +} // EvolutionFactoryImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java new file mode 100644 index 0000000000..a4af9491d0 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionImpl.java @@ -0,0 +1,691 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.Release; + +import org.eclipse.net4j.util.collection.CollectionUtil; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.common.util.ECollections; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EcoreEList; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.InternalEList; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Evolution</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#isUseEcorePackage <em>Use Ecore Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#isUseEresourcePackage <em>Use Eresource Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#isUseEtypesPackage <em>Use Etypes Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#isUniqueNamespaces <em>Unique Namespaces</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getModels <em>Models</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getRootPackages <em>Root Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getAllPackages <em>All Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getMissingPackages <em>Missing Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getReleases <em>Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getOrderedReleases <em>Ordered Releases</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getLatestRelease <em>Latest Release</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.EvolutionImpl#getNextReleaseVersion <em>Next Release Version</em>}</li> + * </ul> + * + * @generated + */ +public class EvolutionImpl extends ModelSetImpl implements Evolution +{ + /** + * The default value of the '{@link #isUseEcorePackage() <em>Use Ecore Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #isUseEcorePackage() + * @generated + * @ordered + */ + protected static final boolean USE_ECORE_PACKAGE_EDEFAULT = true; + + /** + * The default value of the '{@link #isUseEresourcePackage() <em>Use Eresource Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #isUseEresourcePackage() + * @generated + * @ordered + */ + protected static final boolean USE_ERESOURCE_PACKAGE_EDEFAULT = false; + + /** + * The default value of the '{@link #isUseEtypesPackage() <em>Use Etypes Package</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #isUseEtypesPackage() + * @generated + * @ordered + */ + protected static final boolean USE_ETYPES_PACKAGE_EDEFAULT = false; + + /** + * The default value of the '{@link #isUniqueNamespaces() <em>Unique Namespaces</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #isUniqueNamespaces() + * @generated + * @ordered + */ + protected static final boolean UNIQUE_NAMESPACES_EDEFAULT = true; + + /** + * The default value of the '{@link #getNextReleaseVersion() <em>Next Release Version</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getNextReleaseVersion() + * @generated + * @ordered + */ + protected static final int NEXT_RELEASE_VERSION_EDEFAULT = 0; + + private Map<String, Set<EPackage>> releasedPackages; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.EVOLUTION; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + public EList<Model> getModels() + { + return (EList<Model>)eDynamicGet(EvolutionPackage.EVOLUTION__MODELS, EvolutionPackage.Literals.EVOLUTION__MODELS, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean isUseEcorePackage() + { + return (Boolean)eDynamicGet(EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE, EvolutionPackage.Literals.EVOLUTION__USE_ECORE_PACKAGE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setUseEcorePackage(boolean newUseEcorePackage) + { + eDynamicSet(EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE, EvolutionPackage.Literals.EVOLUTION__USE_ECORE_PACKAGE, newUseEcorePackage); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean isUseEresourcePackage() + { + return (Boolean)eDynamicGet(EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE, EvolutionPackage.Literals.EVOLUTION__USE_ERESOURCE_PACKAGE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setUseEresourcePackage(boolean newUseEresourcePackage) + { + eDynamicSet(EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE, EvolutionPackage.Literals.EVOLUTION__USE_ERESOURCE_PACKAGE, newUseEresourcePackage); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean isUseEtypesPackage() + { + return (Boolean)eDynamicGet(EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE, EvolutionPackage.Literals.EVOLUTION__USE_ETYPES_PACKAGE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setUseEtypesPackage(boolean newUseEtypesPackage) + { + eDynamicSet(EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE, EvolutionPackage.Literals.EVOLUTION__USE_ETYPES_PACKAGE, newUseEtypesPackage); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean isUniqueNamespaces() + { + return (Boolean)eDynamicGet(EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES, EvolutionPackage.Literals.EVOLUTION__UNIQUE_NAMESPACES, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setUniqueNamespaces(boolean newUniqueNamespaces) + { + eDynamicSet(EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES, EvolutionPackage.Literals.EVOLUTION__UNIQUE_NAMESPACES, newUniqueNamespaces); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public EList<EPackage> getRootPackages() + { + EcoreEList<EPackage> list = new EcoreEList<EPackage>(EPackage.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.EVOLUTION__ROOT_PACKAGES; + } + }; + + for (Model model : getModels()) + { + EPackage rootPackage = model.getRootPackage(); + if (rootPackage != null) + { + list.add(rootPackage); + } + } + + return list; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public EList<EPackage> getAllPackages() + { + EcoreEList<EPackage> list = new EcoreEList<EPackage>(EPackage.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.EVOLUTION__ALL_PACKAGES; + } + }; + + for (Model model : getModels()) + { + list.addAll(model.getAllPackages()); + } + + return list; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EList<EPackage> getMissingPackages() + { + EcoreEList<EPackage> list = new EcoreEList<EPackage>(EPackage.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.EVOLUTION__MISSING_PACKAGES; + } + }; + + Set<EPackage> set = new HashSet<EPackage>(); + for (Model model : getModels()) + { + set.addAll(model.getMissingPackages()); + } + + list.addAll(set); + return list; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Release getRelease(int version) + { + for (Release release : getReleases()) + { + if (release.getVersion() == version) + { + return release; + } + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + public EList<Release> getReleases() + { + return (EList<Release>)eDynamicGet(EvolutionPackage.EVOLUTION__RELEASES, EvolutionPackage.Literals.EVOLUTION__RELEASES, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EList<Release> getOrderedReleases() + { + EcoreEList<Release> list = new EcoreEList<Release>(Release.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.EVOLUTION__ORDERED_RELEASES; + } + }; + + list.addAll(getReleases()); + ECollections.sort(list); + return list; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Release getLatestRelease() + { + Release latestRelease = basicGetLatestRelease(); + return latestRelease != null && ((EObject)latestRelease).eIsProxy() ? (Release)eResolveProxy((InternalEObject)latestRelease) : latestRelease; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Release basicGetLatestRelease() + { + EList<Release> orderedReleases = getOrderedReleases(); + if (orderedReleases.isEmpty()) + { + return null; + } + + return orderedReleases.get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public int getNextReleaseVersion() + { + Release latestRelease = getLatestRelease(); + return latestRelease == null ? 1 : latestRelease.getVersion() + 1; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.EVOLUTION__MODELS: + return ((InternalEList<InternalEObject>)(InternalEList<?>)getModels()).basicAdd(otherEnd, msgs); + case EvolutionPackage.EVOLUTION__RELEASES: + return ((InternalEList<InternalEObject>)(InternalEList<?>)getReleases()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.EVOLUTION__MODELS: + return ((InternalEList<?>)getModels()).basicRemove(otherEnd, msgs); + case EvolutionPackage.EVOLUTION__RELEASES: + return ((InternalEList<?>)getReleases()).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 EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE: + return isUseEcorePackage(); + case EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE: + return isUseEresourcePackage(); + case EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE: + return isUseEtypesPackage(); + case EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES: + return isUniqueNamespaces(); + case EvolutionPackage.EVOLUTION__MODELS: + return getModels(); + case EvolutionPackage.EVOLUTION__ROOT_PACKAGES: + return getRootPackages(); + case EvolutionPackage.EVOLUTION__ALL_PACKAGES: + return getAllPackages(); + case EvolutionPackage.EVOLUTION__MISSING_PACKAGES: + return getMissingPackages(); + case EvolutionPackage.EVOLUTION__RELEASES: + return getReleases(); + case EvolutionPackage.EVOLUTION__ORDERED_RELEASES: + return getOrderedReleases(); + case EvolutionPackage.EVOLUTION__LATEST_RELEASE: + if (resolve) + { + return getLatestRelease(); + } + return basicGetLatestRelease(); + case EvolutionPackage.EVOLUTION__NEXT_RELEASE_VERSION: + return getNextReleaseVersion(); + } + 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 EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE: + setUseEcorePackage((Boolean)newValue); + return; + case EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE: + setUseEresourcePackage((Boolean)newValue); + return; + case EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE: + setUseEtypesPackage((Boolean)newValue); + return; + case EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES: + setUniqueNamespaces((Boolean)newValue); + return; + case EvolutionPackage.EVOLUTION__MODELS: + getModels().clear(); + getModels().addAll((Collection<? extends Model>)newValue); + return; + case EvolutionPackage.EVOLUTION__RELEASES: + getReleases().clear(); + getReleases().addAll((Collection<? extends Release>)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE: + setUseEcorePackage(USE_ECORE_PACKAGE_EDEFAULT); + return; + case EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE: + setUseEresourcePackage(USE_ERESOURCE_PACKAGE_EDEFAULT); + return; + case EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE: + setUseEtypesPackage(USE_ETYPES_PACKAGE_EDEFAULT); + return; + case EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES: + setUniqueNamespaces(UNIQUE_NAMESPACES_EDEFAULT); + return; + case EvolutionPackage.EVOLUTION__MODELS: + getModels().clear(); + return; + case EvolutionPackage.EVOLUTION__RELEASES: + getReleases().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.EVOLUTION__USE_ECORE_PACKAGE: + return isUseEcorePackage() != USE_ECORE_PACKAGE_EDEFAULT; + case EvolutionPackage.EVOLUTION__USE_ERESOURCE_PACKAGE: + return isUseEresourcePackage() != USE_ERESOURCE_PACKAGE_EDEFAULT; + case EvolutionPackage.EVOLUTION__USE_ETYPES_PACKAGE: + return isUseEtypesPackage() != USE_ETYPES_PACKAGE_EDEFAULT; + case EvolutionPackage.EVOLUTION__UNIQUE_NAMESPACES: + return isUniqueNamespaces() != UNIQUE_NAMESPACES_EDEFAULT; + case EvolutionPackage.EVOLUTION__MODELS: + return !getModels().isEmpty(); + case EvolutionPackage.EVOLUTION__ROOT_PACKAGES: + return !getRootPackages().isEmpty(); + case EvolutionPackage.EVOLUTION__ALL_PACKAGES: + return !getAllPackages().isEmpty(); + case EvolutionPackage.EVOLUTION__MISSING_PACKAGES: + return !getMissingPackages().isEmpty(); + case EvolutionPackage.EVOLUTION__RELEASES: + return !getReleases().isEmpty(); + case EvolutionPackage.EVOLUTION__ORDERED_RELEASES: + return !getOrderedReleases().isEmpty(); + case EvolutionPackage.EVOLUTION__LATEST_RELEASE: + return basicGetLatestRelease() != null; + case EvolutionPackage.EVOLUTION__NEXT_RELEASE_VERSION: + return getNextReleaseVersion() != NEXT_RELEASE_VERSION_EDEFAULT; + } + return super.eIsSet(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eInvoke(int operationID, EList<?> arguments) throws InvocationTargetException + { + switch (operationID) + { + case EvolutionPackage.EVOLUTION___GET_RELEASE__INT: + return getRelease((Integer)arguments.get(0)); + } + return super.eInvoke(operationID, arguments); + } + + @Override + public Evolution getEvolution() + { + return this; + } + + @Override + public int getVersion() + { + return Integer.MAX_VALUE; + } + + @Override + public Release getPreviousRelease() + { + return getLatestRelease(); + } + + @Override + public boolean containsElement(EModelElement modelElement) + { + for (EPackage ePackage : getRootPackages()) + { + if (EcoreUtil.isAncestor(ePackage, modelElement)) + { + return true; + } + } + + return false; + } + + public Map<String, Set<EPackage>> getReleasedPackages() + { + if (releasedPackages == null) + { + releasedPackages = new HashMap<String, Set<EPackage>>(); + + for (Release release : getReleases()) + { + for (EPackage ePackage : release.getAllPackages()) + { + CollectionUtil.add(releasedPackages, ePackage.getNsURI(), ePackage); + } + } + } + + return releasedPackages; + } + + public static Evolution get(Notifier notifier) + { + if (notifier instanceof ResourceSet) + { + EList<Resource> resources = ((ResourceSet)notifier).getResources(); + if (resources.isEmpty()) + { + return null; + } + + notifier = resources.get(0); + } + + if (notifier instanceof Resource) + { + EList<EObject> contents = ((Resource)notifier).getContents(); + if (contents.isEmpty()) + { + return null; + } + + notifier = contents.get(0); + } + + if (notifier instanceof Evolution) + { + return (Evolution)notifier; + } + + if (notifier instanceof EObject) + { + Resource resource = ((EObject)notifier).eResource(); + if (resource != null) + { + return get(resource.getResourceSet()); + } + } + + return null; + } + +} // EvolutionImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java new file mode 100644 index 0000000000..3f66950b8f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPackageImpl.java @@ -0,0 +1,1306 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; +import org.eclipse.emf.cdo.evolution.Migration; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; +import org.eclipse.emf.cdo.evolution.PropertyChange; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.util.EvolutionValidator; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EGenericType; +import org.eclipse.emf.ecore.EOperation; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.ETypeParameter; +import org.eclipse.emf.ecore.EValidator; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.impl.EPackageImpl; + +/** + * <!-- begin-user-doc --> + * An implementation of the model <b>Package</b>. + * <!-- end-user-doc --> + * @generated + */ +public class EvolutionPackageImpl extends EPackageImpl implements EvolutionPackage +{ + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass modelSetEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass modelEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass evolutionEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass releaseEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass changeEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass modelSetChangeEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass elementChangeEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass propertyChangeEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass migrationEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EClass featurePathMigrationEClass = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EEnum changeKindEEnum = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private EDataType uriEDataType = null; + + /** + * Creates an instance of the model <b>Package</b>, registered with + * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package + * package URI value. + * <p>Note: the correct way to create the package is via the static + * factory method {@link #init init()}, which also performs + * initialization of the package, or returns the registered package, + * if one already exists. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.ecore.EPackage.Registry + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage#eNS_URI + * @see #init() + * @generated + */ + private EvolutionPackageImpl() + { + super(eNS_URI, EvolutionFactory.eINSTANCE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static boolean isInited = false; + + /** + * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends. + * + * <p>This method is used to initialize {@link EvolutionPackage#eINSTANCE} when that field is accessed. + * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #eNS_URI + * @see #createPackageContents() + * @see #initializePackageContents() + * @generated + */ + public static EvolutionPackage init() + { + if (isInited) + { + return (EvolutionPackage)EPackage.Registry.INSTANCE.getEPackage(EvolutionPackage.eNS_URI); + } + + // Obtain or create and register package + Object registeredEvolutionPackage = EPackage.Registry.INSTANCE.get(eNS_URI); + EvolutionPackageImpl theEvolutionPackage = registeredEvolutionPackage instanceof EvolutionPackageImpl ? (EvolutionPackageImpl)registeredEvolutionPackage + : new EvolutionPackageImpl(); + + isInited = true; + + // Initialize simple dependencies + EcorePackage.eINSTANCE.eClass(); + + // Create package meta-data objects + theEvolutionPackage.createPackageContents(); + + // Initialize created meta-data + theEvolutionPackage.initializePackageContents(); + + // Register package validator + EValidator.Registry.INSTANCE.put(theEvolutionPackage, new EValidator.Descriptor() + { + public EValidator getEValidator() + { + return EvolutionValidator.INSTANCE; + } + }); + + // Mark meta-data to indicate it can't be changed + theEvolutionPackage.freeze(); + + // Update the registry and return the package + EPackage.Registry.INSTANCE.put(EvolutionPackage.eNS_URI, theEvolutionPackage); + return theEvolutionPackage; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getModelSet() + { + return modelSetEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModelSet_Change() + { + return (EReference)modelSetEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModelSet_Migrations() + { + return (EReference)modelSetEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetEvolution() + { + return modelSetEClass.getEOperations().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetVersion() + { + return modelSetEClass.getEOperations().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetPreviousRelease() + { + return modelSetEClass.getEOperations().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetRootPackages() + { + return modelSetEClass.getEOperations().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetAllPackages() + { + return modelSetEClass.getEOperations().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__ContainsElement__EModelElement() + { + return modelSetEClass.getEOperations().get(5); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetElement__String() + { + return modelSetEClass.getEOperations().get(6); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetElementID__EModelElement() + { + return modelSetEClass.getEOperations().get(7); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetElementID__EModelElement_boolean() + { + return modelSetEClass.getEOperations().get(8); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__Compare__ModelSet() + { + return modelSetEClass.getEOperations().get(9); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getModelSet__GetMigration__String() + { + return modelSetEClass.getEOperations().get(10); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getModel() + { + return modelEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModel_Evolution() + { + return (EReference)modelEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getModel_URI() + { + return (EAttribute)modelEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModel_RootPackage() + { + return (EReference)modelEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModel_AllPackages() + { + return (EReference)modelEClass.getEStructuralFeatures().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModel_ReferencedPackages() + { + return (EReference)modelEClass.getEStructuralFeatures().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModel_MissingPackages() + { + return (EReference)modelEClass.getEStructuralFeatures().get(5); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getEvolution() + { + return evolutionEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEvolution_Models() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEvolution_UseEcorePackage() + { + return (EAttribute)evolutionEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEvolution_UseEresourcePackage() + { + return (EAttribute)evolutionEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEvolution_UseEtypesPackage() + { + return (EAttribute)evolutionEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEvolution_UniqueNamespaces() + { + return (EAttribute)evolutionEClass.getEStructuralFeatures().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEvolution_RootPackages() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(5); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEvolution_AllPackages() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(6); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEvolution_Releases() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(8); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEvolution_OrderedReleases() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(9); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEvolution_LatestRelease() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(10); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getEvolution_NextReleaseVersion() + { + return (EAttribute)evolutionEClass.getEStructuralFeatures().get(11); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getEvolution_MissingPackages() + { + return (EReference)evolutionEClass.getEStructuralFeatures().get(7); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getEvolution__GetRelease__int() + { + return evolutionEClass.getEOperations().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getRelease() + { + return releaseEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getRelease_Evolution() + { + return (EReference)releaseEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getRelease_Date() + { + return (EAttribute)releaseEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getRelease_NextRelease() + { + return (EReference)releaseEClass.getEStructuralFeatures().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getRelease_PreviousRelease() + { + return (EReference)releaseEClass.getEStructuralFeatures().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getRelease_Version() + { + return (EAttribute)releaseEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getRelease_RootPackages() + { + return (EReference)releaseEClass.getEStructuralFeatures().get(5); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getRelease_AllPackages() + { + return (EReference)releaseEClass.getEStructuralFeatures().get(6); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getChange() + { + return changeEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getChange_Parent() + { + return (EReference)changeEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getChange_Children() + { + return (EReference)changeEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getChange__GetOldModelSet() + { + return changeEClass.getEOperations().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getChange__GetNewModelSet() + { + return changeEClass.getEOperations().get(4); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getChange__GetModelSetChange() + { + return changeEClass.getEOperations().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getChange__GetOldElementFor__EModelElement() + { + return changeEClass.getEOperations().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getChange__GetNewElementsFor__EModelElement() + { + return changeEClass.getEOperations().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getModelSetChange() + { + return modelSetChangeEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModelSetChange_OldModelSet() + { + return (EReference)modelSetChangeEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getModelSetChange_NewModelSet() + { + return (EReference)modelSetChangeEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getElementChange() + { + return elementChangeEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getElementChange_OldElement() + { + return (EReference)elementChangeEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getElementChange_NewElement() + { + return (EReference)elementChangeEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getElementChange_Kind() + { + return (EAttribute)elementChangeEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EOperation getElementChange__GetElement() + { + return elementChangeEClass.getEOperations().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getPropertyChange() + { + return propertyChangeEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getPropertyChange_Feature() + { + return (EReference)propertyChangeEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getPropertyChange_OldValue() + { + return (EAttribute)propertyChangeEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getPropertyChange_NewValue() + { + return (EAttribute)propertyChangeEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getPropertyChange_Kind() + { + return (EAttribute)propertyChangeEClass.getEStructuralFeatures().get(3); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getMigration() + { + return migrationEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getMigration_ModelSet() + { + return (EReference)migrationEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EAttribute getMigration_DiagnosticID() + { + return (EAttribute)migrationEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getFeaturePathMigration() + { + return featurePathMigrationEClass; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getFeaturePathMigration_FromClass() + { + return (EReference)featurePathMigrationEClass.getEStructuralFeatures().get(0); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getFeaturePathMigration_ToClass() + { + return (EReference)featurePathMigrationEClass.getEStructuralFeatures().get(1); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EReference getFeaturePathMigration_FeaturePath() + { + return (EReference)featurePathMigrationEClass.getEStructuralFeatures().get(2); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EEnum getChangeKind() + { + return changeKindEEnum; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EDataType getURI() + { + return uriEDataType; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionFactory getEvolutionFactory() + { + return (EvolutionFactory)getEFactoryInstance(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isCreated = false; + + /** + * Creates the meta-model objects for the package. This method is + * guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void createPackageContents() + { + if (isCreated) + { + return; + } + isCreated = true; + + // Create classes and their features + modelSetEClass = createEClass(MODEL_SET); + createEReference(modelSetEClass, MODEL_SET__CHANGE); + createEReference(modelSetEClass, MODEL_SET__MIGRATIONS); + createEOperation(modelSetEClass, MODEL_SET___GET_EVOLUTION); + createEOperation(modelSetEClass, MODEL_SET___GET_VERSION); + createEOperation(modelSetEClass, MODEL_SET___GET_PREVIOUS_RELEASE); + createEOperation(modelSetEClass, MODEL_SET___GET_ROOT_PACKAGES); + createEOperation(modelSetEClass, MODEL_SET___GET_ALL_PACKAGES); + createEOperation(modelSetEClass, MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT); + createEOperation(modelSetEClass, MODEL_SET___GET_ELEMENT__STRING); + createEOperation(modelSetEClass, MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT); + createEOperation(modelSetEClass, MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN); + createEOperation(modelSetEClass, MODEL_SET___COMPARE__MODELSET); + createEOperation(modelSetEClass, MODEL_SET___GET_MIGRATION__STRING); + + modelEClass = createEClass(MODEL); + createEReference(modelEClass, MODEL__EVOLUTION); + createEAttribute(modelEClass, MODEL__URI); + createEReference(modelEClass, MODEL__ROOT_PACKAGE); + createEReference(modelEClass, MODEL__ALL_PACKAGES); + createEReference(modelEClass, MODEL__REFERENCED_PACKAGES); + createEReference(modelEClass, MODEL__MISSING_PACKAGES); + + evolutionEClass = createEClass(EVOLUTION); + createEAttribute(evolutionEClass, EVOLUTION__USE_ECORE_PACKAGE); + createEAttribute(evolutionEClass, EVOLUTION__USE_ERESOURCE_PACKAGE); + createEAttribute(evolutionEClass, EVOLUTION__USE_ETYPES_PACKAGE); + createEAttribute(evolutionEClass, EVOLUTION__UNIQUE_NAMESPACES); + createEReference(evolutionEClass, EVOLUTION__MODELS); + createEReference(evolutionEClass, EVOLUTION__ROOT_PACKAGES); + createEReference(evolutionEClass, EVOLUTION__ALL_PACKAGES); + createEReference(evolutionEClass, EVOLUTION__MISSING_PACKAGES); + createEReference(evolutionEClass, EVOLUTION__RELEASES); + createEReference(evolutionEClass, EVOLUTION__ORDERED_RELEASES); + createEReference(evolutionEClass, EVOLUTION__LATEST_RELEASE); + createEAttribute(evolutionEClass, EVOLUTION__NEXT_RELEASE_VERSION); + createEOperation(evolutionEClass, EVOLUTION___GET_RELEASE__INT); + + releaseEClass = createEClass(RELEASE); + createEReference(releaseEClass, RELEASE__EVOLUTION); + createEAttribute(releaseEClass, RELEASE__VERSION); + createEAttribute(releaseEClass, RELEASE__DATE); + createEReference(releaseEClass, RELEASE__NEXT_RELEASE); + createEReference(releaseEClass, RELEASE__PREVIOUS_RELEASE); + createEReference(releaseEClass, RELEASE__ROOT_PACKAGES); + createEReference(releaseEClass, RELEASE__ALL_PACKAGES); + + changeEClass = createEClass(CHANGE); + createEReference(changeEClass, CHANGE__PARENT); + createEReference(changeEClass, CHANGE__CHILDREN); + createEOperation(changeEClass, CHANGE___GET_MODEL_SET_CHANGE); + createEOperation(changeEClass, CHANGE___GET_OLD_ELEMENT_FOR__EMODELELEMENT); + createEOperation(changeEClass, CHANGE___GET_NEW_ELEMENTS_FOR__EMODELELEMENT); + createEOperation(changeEClass, CHANGE___GET_OLD_MODEL_SET); + createEOperation(changeEClass, CHANGE___GET_NEW_MODEL_SET); + + modelSetChangeEClass = createEClass(MODEL_SET_CHANGE); + createEReference(modelSetChangeEClass, MODEL_SET_CHANGE__OLD_MODEL_SET); + createEReference(modelSetChangeEClass, MODEL_SET_CHANGE__NEW_MODEL_SET); + + elementChangeEClass = createEClass(ELEMENT_CHANGE); + createEReference(elementChangeEClass, ELEMENT_CHANGE__OLD_ELEMENT); + createEReference(elementChangeEClass, ELEMENT_CHANGE__NEW_ELEMENT); + createEAttribute(elementChangeEClass, ELEMENT_CHANGE__KIND); + createEOperation(elementChangeEClass, ELEMENT_CHANGE___GET_ELEMENT); + + propertyChangeEClass = createEClass(PROPERTY_CHANGE); + createEReference(propertyChangeEClass, PROPERTY_CHANGE__FEATURE); + createEAttribute(propertyChangeEClass, PROPERTY_CHANGE__OLD_VALUE); + createEAttribute(propertyChangeEClass, PROPERTY_CHANGE__NEW_VALUE); + createEAttribute(propertyChangeEClass, PROPERTY_CHANGE__KIND); + + migrationEClass = createEClass(MIGRATION); + createEReference(migrationEClass, MIGRATION__MODEL_SET); + createEAttribute(migrationEClass, MIGRATION__DIAGNOSTIC_ID); + + featurePathMigrationEClass = createEClass(FEATURE_PATH_MIGRATION); + createEReference(featurePathMigrationEClass, FEATURE_PATH_MIGRATION__FROM_CLASS); + createEReference(featurePathMigrationEClass, FEATURE_PATH_MIGRATION__TO_CLASS); + createEReference(featurePathMigrationEClass, FEATURE_PATH_MIGRATION__FEATURE_PATH); + + // Create enums + changeKindEEnum = createEEnum(CHANGE_KIND); + + // Create data types + uriEDataType = createEDataType(URI); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private boolean isInitialized = false; + + /** + * Complete the initialization of the package and its meta-model. This + * method is guarded to have no affect on any invocation but its first. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void initializePackageContents() + { + if (isInitialized) + { + return; + } + isInitialized = true; + + // Initialize package + setName(eNAME); + setNsPrefix(eNS_PREFIX); + setNsURI(eNS_URI); + + // Obtain other dependent packages + EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI); + + // Create type parameters + + // Set bounds for type parameters + + // Add supertypes to classes + evolutionEClass.getESuperTypes().add(getModelSet()); + releaseEClass.getESuperTypes().add(getModelSet()); + modelSetChangeEClass.getESuperTypes().add(getChange()); + elementChangeEClass.getESuperTypes().add(getChange()); + propertyChangeEClass.getESuperTypes().add(getChange()); + featurePathMigrationEClass.getESuperTypes().add(getMigration()); + + // Initialize classes, features, and operations; add parameters + initEClass(modelSetEClass, ModelSet.class, "ModelSet", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getModelSet_Change(), getModelSetChange(), null, "change", null, 0, 1, ModelSet.class, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, + IS_COMPOSITE, !IS_RESOLVE_PROXIES, IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getModelSet_Migrations(), getMigration(), getMigration_ModelSet(), "migrations", null, 0, -1, ModelSet.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEOperation(getModelSet__GetEvolution(), getEvolution(), "getEvolution", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getModelSet__GetVersion(), ecorePackage.getEInt(), "getVersion", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getModelSet__GetPreviousRelease(), getRelease(), "getPreviousRelease", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getModelSet__GetRootPackages(), ecorePackage.getEPackage(), "getRootPackages", 0, -1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getModelSet__GetAllPackages(), ecorePackage.getEPackage(), "getAllPackages", 0, -1, IS_UNIQUE, IS_ORDERED); + + EOperation op = initEOperation(getModelSet__ContainsElement__EModelElement(), theEcorePackage.getEBoolean(), "containsElement", 0, 1, IS_UNIQUE, + IS_ORDERED); + addEParameter(op, theEcorePackage.getEModelElement(), "modelElement", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getModelSet__GetElement__String(), null, "getElement", 0, 1, IS_UNIQUE, IS_ORDERED); + ETypeParameter t1 = addETypeParameter(op, "T"); + EGenericType g1 = createEGenericType(theEcorePackage.getEModelElement()); + t1.getEBounds().add(g1); + addEParameter(op, theEcorePackage.getEString(), "id", 0, 1, IS_UNIQUE, IS_ORDERED); + g1 = createEGenericType(t1); + initEOperation(op, g1); + + op = initEOperation(getModelSet__GetElementID__EModelElement(), theEcorePackage.getEString(), "getElementID", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEModelElement(), "modelElement", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getModelSet__GetElementID__EModelElement_boolean(), theEcorePackage.getEString(), "getElementID", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEModelElement(), "modelElement", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, ecorePackage.getEBoolean(), "considerOldIDs", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getModelSet__Compare__ModelSet(), getModelSetChange(), "compare", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, getModelSet(), "other", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getModelSet__GetMigration__String(), getMigration(), "getMigration", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, ecorePackage.getEString(), "diagnosticID", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEClass(modelEClass, Model.class, "Model", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getModel_Evolution(), getEvolution(), getEvolution_Models(), "evolution", null, 1, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getModel_URI(), getURI(), "uRI", null, 0, 1, Model.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, + !IS_DERIVED, IS_ORDERED); + initEReference(getModel_RootPackage(), theEcorePackage.getEPackage(), null, "rootPackage", null, 0, 1, Model.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getModel_AllPackages(), theEcorePackage.getEPackage(), null, "allPackages", null, 0, -1, Model.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getModel_ReferencedPackages(), theEcorePackage.getEPackage(), null, "referencedPackages", null, 0, -1, Model.class, IS_TRANSIENT, + IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getModel_MissingPackages(), theEcorePackage.getEPackage(), null, "missingPackages", null, 0, -1, Model.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + + initEClass(evolutionEClass, Evolution.class, "Evolution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEAttribute(getEvolution_UseEcorePackage(), ecorePackage.getEBoolean(), "useEcorePackage", "true", 0, 1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getEvolution_UseEresourcePackage(), ecorePackage.getEBoolean(), "useEresourcePackage", null, 0, 1, Evolution.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getEvolution_UseEtypesPackage(), ecorePackage.getEBoolean(), "useEtypesPackage", null, 0, 1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getEvolution_UniqueNamespaces(), ecorePackage.getEBoolean(), "uniqueNamespaces", "true", 0, 1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_Models(), getModel(), getModel_Evolution(), "models", null, 0, -1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, + IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_RootPackages(), theEcorePackage.getEPackage(), null, "rootPackages", null, 0, -1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_AllPackages(), theEcorePackage.getEPackage(), null, "allPackages", null, 0, -1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_MissingPackages(), theEcorePackage.getEPackage(), null, "missingPackages", null, 0, -1, Evolution.class, IS_TRANSIENT, + IS_VOLATILE, !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_Releases(), getRelease(), getRelease_Evolution(), "releases", null, 0, -1, Evolution.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_OrderedReleases(), getRelease(), null, "orderedReleases", null, 0, -1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getEvolution_LatestRelease(), getRelease(), null, "latestRelease", null, 0, 1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, + !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEAttribute(getEvolution_NextReleaseVersion(), theEcorePackage.getEInt(), "nextReleaseVersion", null, 0, 1, Evolution.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + + op = initEOperation(getEvolution__GetRelease__int(), getRelease(), "getRelease", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEInt(), "version", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEClass(releaseEClass, Release.class, "Release", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getRelease_Evolution(), getEvolution(), getEvolution_Releases(), "evolution", null, 1, 1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getRelease_Version(), ecorePackage.getEInt(), "version", null, 1, 1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, + !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getRelease_Date(), ecorePackage.getEDate(), "date", null, 1, 1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, + !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getRelease_NextRelease(), getRelease(), null, "nextRelease", null, 0, 1, Release.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, + !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getRelease_PreviousRelease(), getRelease(), null, "previousRelease", null, 0, 1, Release.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, + !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + initEReference(getRelease_RootPackages(), theEcorePackage.getEPackage(), null, "rootPackages", null, 0, -1, Release.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getRelease_AllPackages(), theEcorePackage.getEPackage(), null, "allPackages", null, 0, -1, Release.class, IS_TRANSIENT, IS_VOLATILE, + !IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + + initEClass(changeEClass, Change.class, "Change", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getChange_Parent(), getChange(), getChange_Children(), "parent", null, 0, 1, Change.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, + !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getChange_Children(), getChange(), getChange_Parent(), "children", null, 0, -1, Change.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, + IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEOperation(getChange__GetModelSetChange(), getModelSetChange(), "getModelSetChange", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getChange__GetOldElementFor__EModelElement(), theEcorePackage.getEModelElement(), "getOldElementFor", 0, 1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEModelElement(), "newElement", 0, 1, IS_UNIQUE, IS_ORDERED); + + op = initEOperation(getChange__GetNewElementsFor__EModelElement(), theEcorePackage.getEModelElement(), "getNewElementsFor", 0, -1, IS_UNIQUE, IS_ORDERED); + addEParameter(op, theEcorePackage.getEModelElement(), "oldElement", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getChange__GetOldModelSet(), getModelSet(), "getOldModelSet", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEOperation(getChange__GetNewModelSet(), getModelSet(), "getNewModelSet", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEClass(modelSetChangeEClass, ModelSetChange.class, "ModelSetChange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getModelSetChange_OldModelSet(), getModelSet(), null, "oldModelSet", null, 0, 1, ModelSetChange.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getModelSetChange_NewModelSet(), getModelSet(), null, "newModelSet", null, 0, 1, ModelSetChange.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(elementChangeEClass, ElementChange.class, "ElementChange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getElementChange_OldElement(), theEcorePackage.getEModelElement(), null, "oldElement", null, 0, 1, ElementChange.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getElementChange_NewElement(), theEcorePackage.getEModelElement(), null, "newElement", null, 0, 1, ElementChange.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getElementChange_Kind(), getChangeKind(), "kind", null, 0, 1, ElementChange.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, + !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEOperation(getElementChange__GetElement(), theEcorePackage.getEModelElement(), "getElement", 0, 1, IS_UNIQUE, IS_ORDERED); + + initEClass(propertyChangeEClass, PropertyChange.class, "PropertyChange", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getPropertyChange_Feature(), theEcorePackage.getEStructuralFeature(), null, "feature", null, 0, 1, PropertyChange.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getPropertyChange_OldValue(), ecorePackage.getEJavaObject(), "oldValue", null, 0, 1, PropertyChange.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getPropertyChange_NewValue(), ecorePackage.getEJavaObject(), "newValue", null, 0, 1, PropertyChange.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getPropertyChange_Kind(), getChangeKind(), "kind", null, 0, 1, PropertyChange.class, IS_TRANSIENT, IS_VOLATILE, !IS_CHANGEABLE, + !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, IS_DERIVED, IS_ORDERED); + + initEClass(migrationEClass, Migration.class, "Migration", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getMigration_ModelSet(), getModelSet(), getModelSet_Migrations(), "modelSet", null, 0, 1, Migration.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEAttribute(getMigration_DiagnosticID(), ecorePackage.getEString(), "diagnosticID", null, 0, 1, Migration.class, !IS_TRANSIENT, !IS_VOLATILE, + IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + + initEClass(featurePathMigrationEClass, FeaturePathMigration.class, "FeaturePathMigration", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS); + initEReference(getFeaturePathMigration_FromClass(), ecorePackage.getEClass(), null, "fromClass", null, 1, 1, FeaturePathMigration.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFeaturePathMigration_ToClass(), ecorePackage.getEClass(), null, "toClass", null, 1, 1, FeaturePathMigration.class, !IS_TRANSIENT, + !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED); + initEReference(getFeaturePathMigration_FeaturePath(), ecorePackage.getEReference(), null, "featurePath", null, 0, -1, FeaturePathMigration.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(changeKindEEnum, ChangeKind.class, "ChangeKind"); + addEEnumLiteral(changeKindEEnum, ChangeKind.NONE); + addEEnumLiteral(changeKindEEnum, ChangeKind.CHANGED); + addEEnumLiteral(changeKindEEnum, ChangeKind.REMOVED); + addEEnumLiteral(changeKindEEnum, ChangeKind.ADDED); + addEEnumLiteral(changeKindEEnum, ChangeKind.COPIED); + addEEnumLiteral(changeKindEEnum, ChangeKind.MOVED); + + // Initialize data types + initEDataType(uriEDataType, org.eclipse.emf.common.util.URI.class, "URI", IS_SERIALIZABLE, !IS_GENERATED_INSTANCE_CLASS); + + // Create resource + createResource(eNS_URI); + + // Create annotations + // http://www.eclipse.org/emf/2002/Ecore + createEcoreAnnotations(); + // http:///org/eclipse/emf/ecore/util/ExtendedMetaData + createExtendedMetaDataAnnotations(); + } + + /** + * Initializes the annotations for <b>http://www.eclipse.org/emf/2002/Ecore</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createEcoreAnnotations() + { + String source = "http://www.eclipse.org/emf/2002/Ecore"; + addAnnotation(modelEClass, source, new String[] { "constraints", "ModelLoaded IDs_Exist NamespaceReflectsChange" }); + addAnnotation(evolutionEClass, source, new String[] { "constraints", "NotEmpty PackagesUnique NoMissingPackages IDsUnique" }); + addAnnotation(elementChangeEClass, source, new String[] { "constraints", "FeaturePathIsKnown" }); + addAnnotation(migrationEClass, source, new String[] { "constraints", "NotObsolete" }); + addAnnotation(featurePathMigrationEClass, source, new String[] { "constraints", "NewFeatureReachable" }); + } + + /** + * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected void createExtendedMetaDataAnnotations() + { + String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData"; + addAnnotation(getModel_URI(), source, new String[] { "kind", "attribute", "name", "uri" }); + } + +} // EvolutionPackageImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPlugin.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPlugin.java new file mode 100644 index 0000000000..9f831d2a44 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/EvolutionPlugin.java @@ -0,0 +1,92 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.common.EMFPlugin; +import org.eclipse.emf.common.util.ResourceLocator; + +/** + * This is the central singleton for the Evolution model plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ +public final class EvolutionPlugin extends EMFPlugin +{ + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final EvolutionPlugin INSTANCE = new EvolutionPlugin(); + + /** + * Keep track of the singleton. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + private static Implementation plugin; + + /** + * Create the instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionPlugin() + { + super(new ResourceLocator[] {}); + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + @Override + public ResourceLocator getPluginResourceLocator() + { + return plugin; + } + + /** + * Returns the singleton instance of the Eclipse plugin. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the singleton instance. + * @generated + */ + public static Implementation getPlugin() + { + return plugin; + } + + /** + * The actual implementation of the Eclipse <b>Plugin</b>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static class Implementation extends EclipsePlugin + { + /** + * Creates an instance. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Implementation() + { + super(); + + // Remember the static instance. + // + plugin = this; + } + } + +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/FeaturePathMigrationImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/FeaturePathMigrationImpl.java new file mode 100644 index 0000000000..48239adeaa --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/FeaturePathMigrationImpl.java @@ -0,0 +1,220 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EReference; + +import java.util.Collection; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Feature Path Migration</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.FeaturePathMigrationImpl#getFromClass <em>From Class</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.FeaturePathMigrationImpl#getToClass <em>To Class</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.FeaturePathMigrationImpl#getFeaturePath <em>Feature Path</em>}</li> + * </ul> + * + * @generated + */ +public class FeaturePathMigrationImpl extends MigrationImpl implements FeaturePathMigration +{ + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected FeaturePathMigrationImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.FEATURE_PATH_MIGRATION; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getFromClass() + { + return (EClass)eDynamicGet(EvolutionPackage.FEATURE_PATH_MIGRATION__FROM_CLASS, EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FROM_CLASS, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass basicGetFromClass() + { + return (EClass)eDynamicGet(EvolutionPackage.FEATURE_PATH_MIGRATION__FROM_CLASS, EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FROM_CLASS, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setFromClass(EClass newFromClass) + { + eDynamicSet(EvolutionPackage.FEATURE_PATH_MIGRATION__FROM_CLASS, EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FROM_CLASS, newFromClass); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass getToClass() + { + return (EClass)eDynamicGet(EvolutionPackage.FEATURE_PATH_MIGRATION__TO_CLASS, EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__TO_CLASS, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EClass basicGetToClass() + { + return (EClass)eDynamicGet(EvolutionPackage.FEATURE_PATH_MIGRATION__TO_CLASS, EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__TO_CLASS, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setToClass(EClass newToClass) + { + eDynamicSet(EvolutionPackage.FEATURE_PATH_MIGRATION__TO_CLASS, EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__TO_CLASS, newToClass); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + public EList<EReference> getFeaturePath() + { + return (EList<EReference>)eDynamicGet(EvolutionPackage.FEATURE_PATH_MIGRATION__FEATURE_PATH, EvolutionPackage.Literals.FEATURE_PATH_MIGRATION__FEATURE_PATH, + true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.FEATURE_PATH_MIGRATION__FROM_CLASS: + if (resolve) + { + return getFromClass(); + } + return basicGetFromClass(); + case EvolutionPackage.FEATURE_PATH_MIGRATION__TO_CLASS: + if (resolve) + { + return getToClass(); + } + return basicGetToClass(); + case EvolutionPackage.FEATURE_PATH_MIGRATION__FEATURE_PATH: + return getFeaturePath(); + } + 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 EvolutionPackage.FEATURE_PATH_MIGRATION__FROM_CLASS: + setFromClass((EClass)newValue); + return; + case EvolutionPackage.FEATURE_PATH_MIGRATION__TO_CLASS: + setToClass((EClass)newValue); + return; + case EvolutionPackage.FEATURE_PATH_MIGRATION__FEATURE_PATH: + getFeaturePath().clear(); + getFeaturePath().addAll((Collection<? extends EReference>)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.FEATURE_PATH_MIGRATION__FROM_CLASS: + setFromClass((EClass)null); + return; + case EvolutionPackage.FEATURE_PATH_MIGRATION__TO_CLASS: + setToClass((EClass)null); + return; + case EvolutionPackage.FEATURE_PATH_MIGRATION__FEATURE_PATH: + getFeaturePath().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.FEATURE_PATH_MIGRATION__FROM_CLASS: + return basicGetFromClass() != null; + case EvolutionPackage.FEATURE_PATH_MIGRATION__TO_CLASS: + return basicGetToClass() != null; + case EvolutionPackage.FEATURE_PATH_MIGRATION__FEATURE_PATH: + return !getFeaturePath().isEmpty(); + } + return super.eIsSet(featureID); + } + +} // FeaturePathMigrationImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java new file mode 100644 index 0000000000..5f37be483b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/MigrationImpl.java @@ -0,0 +1,252 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Migration; +import org.eclipse.emf.cdo.evolution.ModelSet; + +import org.eclipse.emf.internal.cdo.CDOObjectImpl; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.InternalEObject; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Migration</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.MigrationImpl#getModelSet <em>Model Set</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.MigrationImpl#getDiagnosticID <em>Diagnostic ID</em>}</li> + * </ul> + * + * @generated + */ +public abstract class MigrationImpl extends CDOObjectImpl implements Migration +{ + /** + * The default value of the '{@link #getDiagnosticID() <em>Diagnostic ID</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getDiagnosticID() + * @generated + * @ordered + */ + protected static final String DIAGNOSTIC_ID_EDEFAULT = null; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected MigrationImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.MIGRATION; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected int eStaticFeatureCount() + { + return 0; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSet getModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MIGRATION__MODEL_SET, EvolutionPackage.Literals.MIGRATION__MODEL_SET, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetModelSet(ModelSet newModelSet, NotificationChain msgs) + { + msgs = eBasicSetContainer((InternalEObject)newModelSet, EvolutionPackage.MIGRATION__MODEL_SET, msgs); + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setModelSet(ModelSet newModelSet) + { + eDynamicSet(EvolutionPackage.MIGRATION__MODEL_SET, EvolutionPackage.Literals.MIGRATION__MODEL_SET, newModelSet); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public String getDiagnosticID() + { + return (String)eDynamicGet(EvolutionPackage.MIGRATION__DIAGNOSTIC_ID, EvolutionPackage.Literals.MIGRATION__DIAGNOSTIC_ID, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setDiagnosticID(String newDiagnosticID) + { + eDynamicSet(EvolutionPackage.MIGRATION__DIAGNOSTIC_ID, EvolutionPackage.Literals.MIGRATION__DIAGNOSTIC_ID, newDiagnosticID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.MIGRATION__MODEL_SET: + if (eInternalContainer() != null) + { + msgs = eBasicRemoveFromContainer(msgs); + } + return basicSetModelSet((ModelSet)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.MIGRATION__MODEL_SET: + return basicSetModelSet(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) + { + switch (eContainerFeatureID()) + { + case EvolutionPackage.MIGRATION__MODEL_SET: + return eInternalContainer().eInverseRemove(this, EvolutionPackage.MODEL_SET__MIGRATIONS, ModelSet.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.MIGRATION__MODEL_SET: + return getModelSet(); + case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: + return getDiagnosticID(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case EvolutionPackage.MIGRATION__MODEL_SET: + setModelSet((ModelSet)newValue); + return; + case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: + setDiagnosticID((String)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MIGRATION__MODEL_SET: + setModelSet((ModelSet)null); + return; + case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: + setDiagnosticID(DIAGNOSTIC_ID_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MIGRATION__MODEL_SET: + return getModelSet() != null; + case EvolutionPackage.MIGRATION__DIAGNOSTIC_ID: + return DIAGNOSTIC_ID_EDEFAULT == null ? getDiagnosticID() != null : !DIAGNOSTIC_ID_EDEFAULT.equals(getDiagnosticID()); + } + return super.eIsSet(featureID); + } + +} // MigrationImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java new file mode 100644 index 0000000000..577b41095b --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelImpl.java @@ -0,0 +1,567 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.eresource.EresourcePackage; +import org.eclipse.emf.cdo.etypes.EtypesPackage; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Model; + +import org.eclipse.emf.internal.cdo.CDOObjectImpl; +import org.eclipse.emf.internal.cdo.util.CompletePackageClosure; +import org.eclipse.emf.internal.cdo.util.IPackageClosure; + +import org.eclipse.emf.common.notify.Notification; +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.ECollections; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.impl.ENotificationImpl; +import org.eclipse.emf.ecore.resource.Resource; +import org.eclipse.emf.ecore.resource.ResourceSet; +import org.eclipse.emf.ecore.util.EcoreEList; + +import java.util.Collections; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Model</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl#getEvolution <em>Evolution</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl#getURI <em>URI</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl#getRootPackage <em>Root Package</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl#getAllPackages <em>All Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl#getReferencedPackages <em>Referenced Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelImpl#getMissingPackages <em>Missing Packages</em>}</li> + * </ul> + * + * @generated + */ +public class ModelImpl extends CDOObjectImpl implements Model +{ + /** + * The default value of the '{@link #getURI() <em>URI</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getURI() + * @generated + * @ordered + */ + protected static final URI URI_EDEFAULT = null; + + private ModelStatus status; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.MODEL; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected int eStaticFeatureCount() + { + return 0; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Evolution getEvolution() + { + return (Evolution)eDynamicGet(EvolutionPackage.MODEL__EVOLUTION, EvolutionPackage.Literals.MODEL__EVOLUTION, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetEvolution(Evolution newEvolution, NotificationChain msgs) + { + msgs = eBasicSetContainer((InternalEObject)newEvolution, EvolutionPackage.MODEL__EVOLUTION, msgs); + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setEvolution(Evolution newEvolution) + { + eDynamicSet(EvolutionPackage.MODEL__EVOLUTION, EvolutionPackage.Literals.MODEL__EVOLUTION, newEvolution); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public URI getURI() + { + return (URI)eDynamicGet(EvolutionPackage.MODEL__URI, EvolutionPackage.Literals.MODEL__URI, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setURIGen(URI newURI) + { + eDynamicSet(EvolutionPackage.MODEL__URI, EvolutionPackage.Literals.MODEL__URI, newURI); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public void setURI(URI newURI) + { + status = null; + + EPackage oldRootPackage = null; + // EList<EPackage> oldAllPackages = null; + // EList<EPackage> oldReferencedPackages = null; + // EList<EPackage> oldMissingPackages = null; + + boolean notificationRequired = eNotificationRequired(); + if (notificationRequired) + { + oldRootPackage = getRootPackage(); + // oldAllPackages = getAllPackages(); + // oldReferencedPackages = getReferencedPackages(); + // oldMissingPackages = getMissingPackages(); + } + + setURIGen(newURI); + + if (notificationRequired) + { + EPackage rootPackage = getRootPackage(); + if (rootPackage != oldRootPackage) + { + eNotify(new ENotificationImpl(this, Notification.SET, EvolutionPackage.Literals.MODEL__ROOT_PACKAGE, oldRootPackage, rootPackage)); + } + + // EList<EPackage> allPackages = getAllPackages(); + // if (!allPackages.equals(oldAllPackages)) + // { + // eNotify(new ENotificationImpl(this, Notification.SET, EvolutionPackage.Literals.MODEL__ALL_PACKAGES, + // oldAllPackages, allPackages)); + // } + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EPackage getRootPackage() + { + EPackage rootPackage = basicGetRootPackage(); + return rootPackage != null && rootPackage.eIsProxy() ? (EPackage)eResolveProxy((InternalEObject)rootPackage) : rootPackage; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EPackage basicGetRootPackage() + { + URI uri = getURI(); + if (uri == null) + { + status = ModelStatus.NO_URI; + return null; + } + + Resource resource = eResource(); + if (resource == null) + { + status = ModelStatus.NO_RESOURCE_SET; + return null; + } + + ResourceSet resourceSet = resource.getResourceSet(); + if (resourceSet == null) + { + status = ModelStatus.NO_RESOURCE_SET; + return null; + } + + if (!resourceSet.getURIConverter().exists(uri, Collections.emptyMap())) + { + status = ModelStatus.RESOURCE_NOT_FOUND; + return null; + } + + Resource modelResource; + + try + { + modelResource = resourceSet.getResource(uri, true); + } + catch (Exception ex) + { + // ex.printStackTrace(); + modelResource = null; + } + + if (modelResource == null) + { + status = ModelStatus.LOAD_PROBLEM; + return null; + } + + if (!modelResource.getErrors().isEmpty()) + { + status = ModelStatus.LOAD_PROBLEM; + resourceSet.getResources().remove(modelResource); + return null; + } + + EList<EObject> contents = modelResource.getContents(); + if (contents.isEmpty()) + { + status = ModelStatus.CONTENT_PROBLEM; + return null; + } + + EObject firstElement = contents.get(0); + if (!(firstElement instanceof EPackage)) + { + status = ModelStatus.CONTENT_PROBLEM; + return null; + } + + status = ModelStatus.OK; + return (EPackage)firstElement; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EList<EPackage> getAllPackages() + { + EPackage rootPackage = getRootPackage(); + if (rootPackage == null) + { + return ECollections.emptyEList(); + } + + EcoreEList<EPackage> list = new EcoreEList<EPackage>(EPackage.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.MODEL__ALL_PACKAGES; + } + }; + + collectAllPackages(rootPackage, list); + return list; + } + + static void collectAllPackages(EPackage ePackage, EList<EPackage> list) + { + list.add(ePackage); + + for (EPackage subPackage : ePackage.getESubpackages()) + { + collectAllPackages(subPackage, list); + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EList<EPackage> getReferencedPackages() + { + EList<EPackage> allPackages = getAllPackages(); + if (allPackages.isEmpty()) + { + return ECollections.emptyEList(); + } + + EcoreEList<EPackage> list = new EcoreEList<EPackage>(EPackage.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.MODEL__REFERENCED_PACKAGES; + } + }; + + IPackageClosure closure = new CompletePackageClosure(); + Set<EPackage> referencedPackages = closure.calculate(allPackages); + + for (EPackage referencedPackage : referencedPackages) + { + if (!allPackages.contains(referencedPackage)) + { + list.add(referencedPackage); + } + } + + return list; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public EList<EPackage> getMissingPackages() + { + EList<EPackage> referencedPackages = getReferencedPackages(); + if (referencedPackages.isEmpty()) + { + return ECollections.emptyEList(); + } + + Evolution evolution = getEvolution(); + if (evolution == null) + { + return ECollections.emptyEList(); + } + + EList<EPackage> allPackages = evolution.getAllPackages(); + + EcoreEList<EPackage> list = new EcoreEList<EPackage>(EPackage.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.MODEL__MISSING_PACKAGES; + } + }; + + for (EPackage referencedPackage : referencedPackages) + { + if (referencedPackage == EcorePackage.eINSTANCE && evolution.isUseEcorePackage()) + { + continue; + } + + if (referencedPackage == EresourcePackage.eINSTANCE && evolution.isUseEresourcePackage()) + { + continue; + } + + if (referencedPackage == EtypesPackage.eINSTANCE && evolution.isUseEtypesPackage()) + { + continue; + } + + if (allPackages.contains(referencedPackage)) + { + continue; + } + + list.add(referencedPackage); + } + + return list; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.MODEL__EVOLUTION: + if (eInternalContainer() != null) + { + msgs = eBasicRemoveFromContainer(msgs); + } + return basicSetEvolution((Evolution)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.MODEL__EVOLUTION: + return basicSetEvolution(null, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) + { + switch (eContainerFeatureID()) + { + case EvolutionPackage.MODEL__EVOLUTION: + return eInternalContainer().eInverseRemove(this, EvolutionPackage.EVOLUTION__MODELS, Evolution.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.MODEL__EVOLUTION: + return getEvolution(); + case EvolutionPackage.MODEL__URI: + return getURI(); + case EvolutionPackage.MODEL__ROOT_PACKAGE: + if (resolve) + { + return getRootPackage(); + } + return basicGetRootPackage(); + case EvolutionPackage.MODEL__ALL_PACKAGES: + return getAllPackages(); + case EvolutionPackage.MODEL__REFERENCED_PACKAGES: + return getReferencedPackages(); + case EvolutionPackage.MODEL__MISSING_PACKAGES: + return getMissingPackages(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case EvolutionPackage.MODEL__EVOLUTION: + setEvolution((Evolution)newValue); + return; + case EvolutionPackage.MODEL__URI: + setURI((URI)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL__EVOLUTION: + setEvolution((Evolution)null); + return; + case EvolutionPackage.MODEL__URI: + setURI(URI_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL__EVOLUTION: + return getEvolution() != null; + case EvolutionPackage.MODEL__URI: + return URI_EDEFAULT == null ? getURI() != null : !URI_EDEFAULT.equals(getURI()); + case EvolutionPackage.MODEL__ROOT_PACKAGE: + return basicGetRootPackage() != null; + case EvolutionPackage.MODEL__ALL_PACKAGES: + return !getAllPackages().isEmpty(); + case EvolutionPackage.MODEL__REFERENCED_PACKAGES: + return !getReferencedPackages().isEmpty(); + case EvolutionPackage.MODEL__MISSING_PACKAGES: + return !getMissingPackages().isEmpty(); + } + return super.eIsSet(featureID); + } + + public ModelStatus getStatus() + { + return status; + } + +} // ModelImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java new file mode 100644 index 0000000000..b06a02328f --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetChangeImpl.java @@ -0,0 +1,276 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Model Set Change</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl#getOldModelSet <em>Old Model Set</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelSetChangeImpl#getNewModelSet <em>New Model Set</em>}</li> + * </ul> + * + * @generated + */ +public class ModelSetChangeImpl extends ChangeImpl implements ModelSetChange +{ + private final Map<EModelElement, ElementChange> elementChanges = new HashMap<EModelElement, ElementChange>(); + + private final Map<EModelElement, EModelElement> newToOldElements = new HashMap<EModelElement, EModelElement>(); + + private final Map<EModelElement, Set<EModelElement>> oldToNewElements = new HashMap<EModelElement, Set<EModelElement>>(); + + private final Set<EModelElement> addedElements = new HashSet<EModelElement>(); + + private final Set<EModelElement> removedElements = new HashSet<EModelElement>(); + + private ModelSet[] modelSetChain; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelSetChangeImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.MODEL_SET_CHANGE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ModelSet getOldModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSet basicGetOldModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setOldModelSet(ModelSet newOldModelSet) + { + eDynamicSet(EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__OLD_MODEL_SET, newOldModelSet); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ModelSet getNewModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSet basicGetNewModelSet() + { + return (ModelSet)eDynamicGet(EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setNewModelSet(ModelSet newNewModelSet) + { + eDynamicSet(EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET, EvolutionPackage.Literals.MODEL_SET_CHANGE__NEW_MODEL_SET, newNewModelSet); + } + + @Override + public ModelSetChange getModelSetChange() + { + return this; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + if (resolve) + { + return getOldModelSet(); + } + return basicGetOldModelSet(); + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + if (resolve) + { + return getNewModelSet(); + } + return basicGetNewModelSet(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + setOldModelSet((ModelSet)newValue); + return; + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + setNewModelSet((ModelSet)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + setOldModelSet((ModelSet)null); + return; + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + setNewModelSet((ModelSet)null); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET_CHANGE__OLD_MODEL_SET: + return basicGetOldModelSet() != null; + case EvolutionPackage.MODEL_SET_CHANGE__NEW_MODEL_SET: + return basicGetNewModelSet() != null; + } + return super.eIsSet(featureID); + } + + public Map<EModelElement, ElementChange> getElementChanges() + { + return elementChanges; + } + + public Map<EModelElement, EModelElement> getNewToOldElements() + { + return newToOldElements; + } + + public Map<EModelElement, Set<EModelElement>> getOldToNewElements() + { + return oldToNewElements; + } + + public Set<EModelElement> getAddedElements() + { + return addedElements; + } + + public Set<EModelElement> getRemovedElements() + { + return removedElements; + } + + public ModelSet[] getModelSetChain() + { + return modelSetChain; + } + + public void setModelSetChain(ModelSet[] modelSetChain) + { + this.modelSetChain = modelSetChain; + setOldModelSet(modelSetChain[0]); + setNewModelSet(modelSetChain[modelSetChain.length - 1]); + + } + + public Map<EModelElement, ElementChange> reset() + { + Map<EModelElement, ElementChange> result = new HashMap<EModelElement, ElementChange>(elementChanges); + + for (ElementChange elementChange : elementChanges.values()) + { + elementChange.getChildren().clear(); + } + + getChildren().clear(); + oldToNewElements.clear(); + newToOldElements.clear(); + addedElements.clear(); + removedElements.clear(); + elementChanges.clear(); + + return result; + } + +} // ModelSetChangeImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java new file mode 100644 index 0000000000..b7d7696a87 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ModelSetImpl.java @@ -0,0 +1,937 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionFactory; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Migration; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; +import org.eclipse.emf.cdo.evolution.PropertyChange; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; +import org.eclipse.emf.cdo.evolution.util.IDAnnotation; + +import org.eclipse.emf.internal.cdo.CDOObjectImpl; + +import org.eclipse.net4j.util.ObjectUtil; +import org.eclipse.net4j.util.collection.CollectionUtil; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.BasicEList; +import org.eclipse.emf.common.util.ECollections; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.InternalEList; + +import java.lang.reflect.InvocationTargetException; +import java.util.Collection; +import java.util.Iterator; +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Model Set</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelSetImpl#getChange <em>Change</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ModelSetImpl#getMigrations <em>Migrations</em>}</li> + * </ul> + * + * @generated + */ +public abstract class ModelSetImpl extends CDOObjectImpl implements ModelSet +{ + private static final boolean COMPARE_CONTAINMENT = false; + + private static final boolean DEBUG_IDS = false; + + private static final boolean DEBUG_MATCH = false; + + private static final boolean DEBUG_COMPARE = false; + + private static final boolean DEBUG_CLEANUP = false; + + private boolean changeInvalid; + + private ModelSetImpl emptyModelSet; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ModelSetImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.MODEL_SET; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected int eStaticFeatureCount() + { + return 0; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public ModelSetChange getChangeGen() + { + return (ModelSetChange)eDynamicGet(EvolutionPackage.MODEL_SET__CHANGE, EvolutionPackage.Literals.MODEL_SET__CHANGE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * + * @generated NOT + */ + public ModelSetChange getChange() + { + ModelSetChangeImpl change = (ModelSetChangeImpl)getChangeGen(); + if (change != null && change.getOldModelSet() != getOldModelSet()) + { + // Can happen after undoing a release. + change = null; + } + + if (change == null || changeInvalid) + + { + ModelSetChangeImpl result; + Map<EModelElement, ElementChange> previousElementChanges; + + if (change != null) + { + previousElementChanges = change.reset(); + result = change; + } + else + { + ModelSet oldModelSet = getOldModelSet(); + ModelSet[] modelSetChain = createModelSetChain(oldModelSet, this); + + previousElementChanges = null; + result = (ModelSetChangeImpl)EvolutionFactory.eINSTANCE.createModelSetChange(modelSetChain); + } + + compareElements(result, previousElementChanges); + + try + { + eSetDeliver(false); + setChange(change = result); + } + finally + { + eSetDeliver(true); + changeInvalid = false; + } + } + + return change; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetChange(ModelSetChange newChange, NotificationChain msgs) + { + msgs = eDynamicInverseAdd((InternalEObject)newChange, EvolutionPackage.MODEL_SET__CHANGE, msgs); + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setChange(ModelSetChange newChange) + { + eDynamicSet(EvolutionPackage.MODEL_SET__CHANGE, EvolutionPackage.Literals.MODEL_SET__CHANGE, newChange); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicUnsetChange(NotificationChain msgs) + { + return eDynamicInverseRemove((InternalEObject)getChange(), EvolutionPackage.MODEL_SET__CHANGE, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void unsetChange() + { + eDynamicUnset(EvolutionPackage.MODEL_SET__CHANGE, EvolutionPackage.Literals.MODEL_SET__CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean isSetChange() + { + return eDynamicIsSet(EvolutionPackage.MODEL_SET__CHANGE, EvolutionPackage.Literals.MODEL_SET__CHANGE); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + public EList<Migration> getMigrations() + { + return (EList<Migration>)eDynamicGet(EvolutionPackage.MODEL_SET__MIGRATIONS, EvolutionPackage.Literals.MODEL_SET__MIGRATIONS, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract Evolution getEvolution(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract int getVersion(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract Release getPreviousRelease(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract EList<EPackage> getRootPackages(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract EList<EPackage> getAllPackages(); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public abstract boolean containsElement(EModelElement modelElement); + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @SuppressWarnings("unchecked") + public <T extends EModelElement> T getElement(final String id) + { + // TODO Design better approach to early return from ElementHandler.execute(). + int xxx; + + class ResultException extends RuntimeException + { + private static final long serialVersionUID = 1L; + + EModelElement result; + } + + try + { + ElementHandler.execute(getRootPackages(), new ElementRunnable() + { + public void run(EModelElement modelElement) + { + if (ObjectUtil.equals(id, getElementID(modelElement))) + { + ResultException ex = new ResultException(); + ex.result = modelElement; + throw ex; + } + } + }); + } + catch (ResultException ex) + { + return (T)ex.result; + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public String getElementID(EModelElement modelElement) + { + return getElementID(modelElement, false); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public String getElementID(EModelElement modelElement, boolean considerOldIDs) + { + if (containsElement(modelElement)) + { + return IDAnnotation.getValue(modelElement, considerOldIDs); + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public ModelSetChange compare(ModelSet other) + { + ModelSet[] modelSetChain = createModelSetChain(this, other); + ModelSetChangeImpl result = (ModelSetChangeImpl)EvolutionFactory.eINSTANCE.createModelSetChange(modelSetChain); + + compareElements(result, null); + return result; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Migration getMigration(String diagnosticID) + { + if (diagnosticID != null) + { + for (Migration migration : getMigrations()) + { + if (diagnosticID.equals(migration.getDiagnosticID())) + { + return migration; + } + } + } + + return null; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @SuppressWarnings("unchecked") + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET__MIGRATIONS: + return ((InternalEList<InternalEObject>)(InternalEList<?>)getMigrations()).basicAdd(otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET__CHANGE: + return basicUnsetChange(msgs); + case EvolutionPackage.MODEL_SET__MIGRATIONS: + return ((InternalEList<?>)getMigrations()).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 EvolutionPackage.MODEL_SET__CHANGE: + return getChange(); + case EvolutionPackage.MODEL_SET__MIGRATIONS: + return getMigrations(); + } + 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 EvolutionPackage.MODEL_SET__CHANGE: + setChange((ModelSetChange)newValue); + return; + case EvolutionPackage.MODEL_SET__MIGRATIONS: + getMigrations().clear(); + getMigrations().addAll((Collection<? extends Migration>)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET__CHANGE: + unsetChange(); + return; + case EvolutionPackage.MODEL_SET__MIGRATIONS: + getMigrations().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.MODEL_SET__CHANGE: + return isSetChange(); + case EvolutionPackage.MODEL_SET__MIGRATIONS: + return !getMigrations().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 EvolutionPackage.MODEL_SET___GET_EVOLUTION: + return getEvolution(); + case EvolutionPackage.MODEL_SET___GET_VERSION: + return getVersion(); + case EvolutionPackage.MODEL_SET___GET_PREVIOUS_RELEASE: + return getPreviousRelease(); + case EvolutionPackage.MODEL_SET___GET_ROOT_PACKAGES: + return getRootPackages(); + case EvolutionPackage.MODEL_SET___GET_ALL_PACKAGES: + return getAllPackages(); + case EvolutionPackage.MODEL_SET___CONTAINS_ELEMENT__EMODELELEMENT: + return containsElement((EModelElement)arguments.get(0)); + case EvolutionPackage.MODEL_SET___GET_ELEMENT__STRING: + return getElement((String)arguments.get(0)); + case EvolutionPackage.MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT: + return getElementID((EModelElement)arguments.get(0)); + case EvolutionPackage.MODEL_SET___GET_ELEMENT_ID__EMODELELEMENT_BOOLEAN: + return getElementID((EModelElement)arguments.get(0), (Boolean)arguments.get(1)); + case EvolutionPackage.MODEL_SET___COMPARE__MODELSET: + return compare((ModelSet)arguments.get(0)); + case EvolutionPackage.MODEL_SET___GET_MIGRATION__STRING: + return getMigration((String)arguments.get(0)); + } + return super.eInvoke(operationID, arguments); + } + + public void invalidateChange() + { + changeInvalid = true; + } + + private ModelSet getOldModelSet() + { + Release previousRelease = getPreviousRelease(); + return previousRelease != null ? previousRelease : getEmptyModelSet(); + } + + private ModelSet getEmptyModelSet() + { + if (emptyModelSet == null) + { + emptyModelSet = new ModelSetImpl() + { + @Override + public int getVersion() + { + return 0; + } + + @Override + public EList<EPackage> getRootPackages() + { + return ECollections.emptyEList(); + } + + @Override + public Release getPreviousRelease() + { + return null; + } + + @Override + public Evolution getEvolution() + { + return ModelSetImpl.this.getEvolution(); + } + + @Override + public EList<EPackage> getAllPackages() + { + return ECollections.emptyEList(); + } + + @Override + public boolean containsElement(EModelElement modelElement) + { + return false; + } + }; + } + + return emptyModelSet; + } + + private static void compareElements(final ModelSetChangeImpl result, final Map<EModelElement, ElementChange> previousElementChanges) + { + final ModelSet[] modelSets = result.getModelSetChain(); + final ModelSet oldModelSet = result.getOldModelSet(); + final ModelSet newModelSet = result.getNewModelSet(); + + ElementHandler.execute(newModelSet.getRootPackages(), new ElementRunnable() + { + public void run(EModelElement newElement) + { + EModelElement oldElement = newElement; + + for (int i = modelSets.length - 1; i > 0; --i) + { + String id = modelSets[i].getElementID(oldElement, true); + oldElement = modelSets[i - 1].getElement(id); + if (oldElement == null) + { + break; + } + } + + if (oldElement != null) + { + String newID = IDAnnotation.getValue(newElement); + String oldID = IDAnnotation.getValue(oldElement); + + ChangeKind kind = ObjectUtil.equals(newID, oldID) ? ChangeKind.NONE : ChangeKind.COPIED; + if (kind == ChangeKind.COPIED) + { + if (newModelSet.getElement(oldID) == null) + { + kind = ChangeKind.MOVED; + } + } + + if (DEBUG_MATCH) + { + System.out.println(kind + " " + getLabel(oldElement) + " --> " + getLabel(newElement)); + } + + ElementChange elementChange = getElementChange(newElement, oldElement, kind, previousElementChanges); + getParentChange(elementChange, result).getChildren().add(elementChange); + result.getElementChanges().put(oldElement, elementChange); + result.getElementChanges().put(newElement, elementChange); + result.getNewToOldElements().put(newElement, oldElement); + CollectionUtil.add(result.getOldToNewElements(), oldElement, newElement); + } + else + { + if (DEBUG_MATCH) + { + System.out.println("ADDED " + getLabel(newElement)); + } + + ElementChange elementChange = getElementChange(null, newElement, ChangeKind.ADDED, previousElementChanges); + getParentChange(elementChange, result).getChildren().add(elementChange); + result.getElementChanges().put(newElement, elementChange); + result.getAddedElements().add(newElement); + } + } + }); + + ElementHandler.execute(oldModelSet.getRootPackages(), new ElementRunnable() + { + public void run(EModelElement oldElement) + { + if (isRemoved(oldElement)) + { + if (DEBUG_MATCH) + { + System.out.println("REMOVED " + getLabel(oldElement)); + } + + ElementChange elementChange = getElementChange(oldElement, null, ChangeKind.REMOVED, previousElementChanges); + getParentChange(elementChange, result).getChildren().add(elementChange); + result.getElementChanges().put(oldElement, elementChange); + result.getRemovedElements().add(oldElement); + } + } + + private boolean isRemoved(EModelElement oldElement) + { + Set<EModelElement> newElements = result.getOldToNewElements().get(oldElement); + if (newElements == null || newElements.isEmpty()) + { + return true; + } + + String oldID = oldModelSet.getElementID(oldElement); + for (EModelElement newElement : newElements) + { + String newID = newModelSet.getElementID(newElement); + if (ObjectUtil.equals(newID, oldID)) + { + return false; + } + } + + return true; + } + }); + + for (Map.Entry<EModelElement, EModelElement> entry : result.getNewToOldElements().entrySet()) + { + EModelElement newElement = entry.getKey(); + EModelElement oldElement = entry.getValue(); + + compareProperties(result, newElement, oldElement); + } + + for (EModelElement newElement : result.getAddedElements()) + { + compareProperties(result, newElement, null); + } + + cleanupChanges(result); + } + + private static void compareProperties(ModelSetChange result, EModelElement newElement, EModelElement oldElement) + { + EClass eClass = newElement.eClass(); + + if (oldElement == null) + { + oldElement = (EModelElement)EcoreUtil.create(eClass); + } + else if (oldElement.eClass() != eClass) + { + int xxx; + throw new IllegalArgumentException(); + } + + Map<EModelElement, EModelElement> newToOldElements = result.getNewToOldElements(); + + for (EStructuralFeature feature : eClass.getEAllStructuralFeatures()) + { + if (feature.isDerived()) + { + continue; + } + + if (feature == EcorePackage.Literals.EPACKAGE__EFACTORY_INSTANCE) + { + continue; + } + + if (feature == EcorePackage.Literals.EENUM_LITERAL__INSTANCE) + { + continue; + } + + EReference eReference = feature instanceof EReference ? (EReference)feature : null; + if (COMPARE_CONTAINMENT) + { + if (feature == EcorePackage.Literals.EMODEL_ELEMENT__EANNOTATIONS) + { + continue; + } + + if (feature == EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE) + { + continue; + } + + if (feature == EcorePackage.Literals.ECLASS__EGENERIC_SUPER_TYPES) + { + continue; + } + } + else + { + if (eReference != null && eReference.isContainment()) + { + continue; + } + } + + Object newValue = newElement.eGet(feature); + if (eReference != null) + { + if (eReference.isMany()) + { + @SuppressWarnings("unchecked") + EList<EObject> list = (EList<EObject>)newValue; + + // TODO As an optimization, defer list creation. + EList<EObject> newList = new BasicEList<EObject>(list.size()); + + for (EObject eObject : list) + { + if (eObject instanceof EModelElement) + { + EModelElement newListElement = (EModelElement)eObject; + EModelElement oldListElement = newToOldElements.get(newListElement); + if (oldListElement != null && oldListElement != newListElement) + { + eObject = oldListElement; + } + } + + newList.add(eObject); + } + + newValue = newList; + } + else + { + if (newValue instanceof EModelElement) + { + EModelElement oldValue = newToOldElements.get(newValue); + if (oldValue != null && oldValue != newValue) + { + newValue = oldValue; + } + } + } + } + + Object oldValue = oldElement.eGet(feature); + if (!ObjectUtil.equals(newValue, oldValue)) + { + if (DEBUG_COMPARE) + { + System.out.println("PROPERTY CHANGE " + getLabel(newElement) + " --> " + feature.getName()); + } + + PropertyChange propertyChange = EvolutionFactory.eINSTANCE.createPropertyChange(feature, oldValue, newValue); + ElementChange elementChange = result.getElementChanges().get(newElement); + elementChange.getChildren().add(0, propertyChange); + } + } + } + + private static void cleanupChanges(Change change) + { + for (Iterator<Change> it = change.getChildren().iterator(); it.hasNext();) + { + Change child = it.next(); + if (child instanceof ElementChange) + { + ElementChange elementChange = (ElementChange)child; + cleanupChanges(elementChange); + + if (elementChange.getKind() == ChangeKind.NONE && elementChange.getChildren().isEmpty()) + { + if (DEBUG_CLEANUP) + { + System.out.println("CLEANUP " + getLabel(elementChange.getElement())); + } + + it.remove(); + } + } + } + } + + private static Change getParentChange(ElementChange elementChange, ModelSetChange modelSetChange) + { + EModelElement element = elementChange.getElement(); + EObject eContainer = element.eContainer(); + if (eContainer instanceof EModelElement) + { + EModelElement parentElement = (EModelElement)eContainer; + ElementChange parentChange = modelSetChange.getElementChanges().get(parentElement); + if (parentChange != null) + { + return parentChange; + } + } + + return modelSetChange; + } + + private static ElementChange getElementChange(EModelElement newElement, EModelElement oldElement, ChangeKind kind, + Map<EModelElement, ElementChange> previousElementChanges) + { + if (previousElementChanges != null) + { + ElementChangeImpl elementChange = (ElementChangeImpl)previousElementChanges.remove(newElement); + if (elementChange == null) + { + elementChange = (ElementChangeImpl)previousElementChanges.remove(oldElement); + } + + if (elementChange != null) + { + // Make sure that the ElementChange can't be used later through any other lookup. + for (Iterator<Map.Entry<EModelElement, ElementChange>> it = previousElementChanges.entrySet().iterator(); it.hasNext();) + { + Map.Entry<EModelElement, ElementChange> entry = it.next(); + if (entry.getValue() == elementChange) + { + it.remove(); + } + } + + elementChange.setOldElement(oldElement); + elementChange.setNewElement(newElement); + elementChange.setKind(kind); + return elementChange; + } + } + + return EvolutionFactory.eINSTANCE.createElementChange(oldElement, newElement, kind); + } + + private static String getLabel(EModelElement element) + { + String label = ElementHandler.getLabel(element); + + if (DEBUG_IDS) + { + String id = IDAnnotation.getValue(element); + if (id != null) + { + label += "[" + id + "]"; + } + } + + return label; + } + + private static ModelSet[] createModelSetChain(ModelSet modelSetA, ModelSet modelSetB) + { + int versionA = modelSetA.getVersion(); + int versionB = modelSetB.getVersion(); + + EList<ModelSet> result = new BasicEList<ModelSet>(); + if (versionA < versionB) + { + result.add(modelSetA); + result.add(modelSetB); + } + else + { + result.add(modelSetB); + result.add(modelSetA); + } + + ModelSet first = result.get(0); + ModelSet second; + while ((second = result.get(1).getPreviousRelease()) != first) + { + if (second == null) + { + break; + } + + result.add(1, second); + } + + return result.toArray(new ModelSet[result.size()]); + } + +} // ModelSetImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/PropertyChangeImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/PropertyChangeImpl.java new file mode 100644 index 0000000000..d8e7d9b720 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/PropertyChangeImpl.java @@ -0,0 +1,301 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.PropertyChange; + +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EStructuralFeature; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Property Change</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl#getFeature <em>Feature</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl#getOldValue <em>Old Value</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl#getNewValue <em>New Value</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.PropertyChangeImpl#getKind <em>Kind</em>}</li> + * </ul> + * + * @generated + */ +public class PropertyChangeImpl extends ChangeImpl implements PropertyChange +{ + /** + * The default value of the '{@link #getOldValue() <em>Old Value</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getOldValue() + * @generated + * @ordered + */ + protected static final Object OLD_VALUE_EDEFAULT = null; + + /** + * The default value of the '{@link #getNewValue() <em>New Value</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getNewValue() + * @generated + * @ordered + */ + protected static final Object NEW_VALUE_EDEFAULT = null; + + /** + * The default value of the '{@link #getKind() <em>Kind</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getKind() + * @generated + * @ordered + */ + protected static final ChangeKind KIND_EDEFAULT = ChangeKind.NONE; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected PropertyChangeImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.PROPERTY_CHANGE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EStructuralFeature getFeature() + { + return (EStructuralFeature)eDynamicGet(EvolutionPackage.PROPERTY_CHANGE__FEATURE, EvolutionPackage.Literals.PROPERTY_CHANGE__FEATURE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EStructuralFeature basicGetFeature() + { + return (EStructuralFeature)eDynamicGet(EvolutionPackage.PROPERTY_CHANGE__FEATURE, EvolutionPackage.Literals.PROPERTY_CHANGE__FEATURE, false, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setFeature(EStructuralFeature newFeature) + { + eDynamicSet(EvolutionPackage.PROPERTY_CHANGE__FEATURE, EvolutionPackage.Literals.PROPERTY_CHANGE__FEATURE, newFeature); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Object getOldValue() + { + return eDynamicGet(EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE, EvolutionPackage.Literals.PROPERTY_CHANGE__OLD_VALUE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setOldValue(Object newOldValue) + { + eDynamicSet(EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE, EvolutionPackage.Literals.PROPERTY_CHANGE__OLD_VALUE, newOldValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Object getNewValue() + { + return eDynamicGet(EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE, EvolutionPackage.Literals.PROPERTY_CHANGE__NEW_VALUE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setNewValue(Object newNewValue) + { + eDynamicSet(EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE, EvolutionPackage.Literals.PROPERTY_CHANGE__NEW_VALUE, newNewValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public ChangeKind getKind() + { + Object oldValue = getOldValue(); + Object newValue = getNewValue(); + + if (oldValue == null) + { + if (newValue == null) + { + return ChangeKind.NONE; + } + + return ChangeKind.ADDED; + } + else + { + if (newValue == null) + { + return ChangeKind.REMOVED; + } + + return ChangeKind.CHANGED; + } + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.PROPERTY_CHANGE__FEATURE: + if (resolve) + { + return getFeature(); + } + return basicGetFeature(); + case EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE: + return getOldValue(); + case EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE: + return getNewValue(); + case EvolutionPackage.PROPERTY_CHANGE__KIND: + return getKind(); + } + return super.eGet(featureID, resolve, coreType); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eSet(int featureID, Object newValue) + { + switch (featureID) + { + case EvolutionPackage.PROPERTY_CHANGE__FEATURE: + setFeature((EStructuralFeature)newValue); + return; + case EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE: + setOldValue(newValue); + return; + case EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE: + setNewValue(newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.PROPERTY_CHANGE__FEATURE: + setFeature((EStructuralFeature)null); + return; + case EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE: + setOldValue(OLD_VALUE_EDEFAULT); + return; + case EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE: + setNewValue(NEW_VALUE_EDEFAULT); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.PROPERTY_CHANGE__FEATURE: + return basicGetFeature() != null; + case EvolutionPackage.PROPERTY_CHANGE__OLD_VALUE: + return OLD_VALUE_EDEFAULT == null ? getOldValue() != null : !OLD_VALUE_EDEFAULT.equals(getOldValue()); + case EvolutionPackage.PROPERTY_CHANGE__NEW_VALUE: + return NEW_VALUE_EDEFAULT == null ? getNewValue() != null : !NEW_VALUE_EDEFAULT.equals(getNewValue()); + case EvolutionPackage.PROPERTY_CHANGE__KIND: + return getKind() != KIND_EDEFAULT; + } + return super.eIsSet(featureID); + } + + @Override + public ModelSet getOldModelSet() + { + Change parent = getParent(); + if (parent != null) + { + return parent.getOldModelSet(); + } + + return null; + } + + @Override + public ModelSet getNewModelSet() + { + Change parent = getParent(); + if (parent != null) + { + return parent.getNewModelSet(); + } + + return null; + } + +} // PropertyChangeImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java new file mode 100644 index 0000000000..f219630386 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/impl/ReleaseImpl.java @@ -0,0 +1,463 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.impl; + +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.util.ElementHandler; +import org.eclipse.emf.cdo.evolution.util.ElementRunnable; + +import org.eclipse.emf.common.notify.NotificationChain; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.InternalEObject; +import org.eclipse.emf.ecore.util.EcoreEList; +import org.eclipse.emf.ecore.util.EcoreUtil; +import org.eclipse.emf.ecore.util.InternalEList; + +import java.util.Collection; +import java.util.Date; +import java.util.HashMap; +import java.util.Map; + +/** + * <!-- begin-user-doc --> + * An implementation of the model object '<em><b>Release</b></em>'. + * <!-- end-user-doc --> + * <p> + * The following features are implemented: + * </p> + * <ul> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl#getEvolution <em>Evolution</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl#getVersion <em>Version</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl#getDate <em>Date</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl#getNextRelease <em>Next Release</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl#getPreviousRelease <em>Previous Release</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl#getRootPackages <em>Root Packages</em>}</li> + * <li>{@link org.eclipse.emf.cdo.evolution.impl.ReleaseImpl#getAllPackages <em>All Packages</em>}</li> + * </ul> + * + * @generated + */ +public class ReleaseImpl extends ModelSetImpl implements Release +{ + /** + * The default value of the '{@link #getVersion() <em>Version</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getVersion() + * @generated + * @ordered + */ + protected static final int VERSION_EDEFAULT = 0; + + /** + * The default value of the '{@link #getDate() <em>Date</em>}' attribute. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see #getDate() + * @generated + * @ordered + */ + protected static final Date DATE_EDEFAULT = null; + + private Map<String, EModelElement> idCache; + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected ReleaseImpl() + { + super(); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EClass eStaticClass() + { + return EvolutionPackage.Literals.RELEASE; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Date getDate() + { + return (Date)eDynamicGet(EvolutionPackage.RELEASE__DATE, EvolutionPackage.Literals.RELEASE__DATE, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setDate(Date newDate) + { + eDynamicSet(EvolutionPackage.RELEASE__DATE, EvolutionPackage.Literals.RELEASE__DATE, newDate); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public Release getNextRelease() + { + Release nextRelease = basicGetNextRelease(); + return nextRelease != null && ((EObject)nextRelease).eIsProxy() ? (Release)eResolveProxy((InternalEObject)nextRelease) : nextRelease; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Release basicGetNextRelease() + { + int nextVersion = getVersion() + 1; + return getEvolution().getRelease(nextVersion); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Release getPreviousRelease() + { + Release previousRelease = basicGetPreviousRelease(); + return previousRelease != null && ((EObject)previousRelease).eIsProxy() ? (Release)eResolveProxy((InternalEObject)previousRelease) : previousRelease; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + public Release basicGetPreviousRelease() + { + int previousVersion = getVersion() - 1; + if (previousVersion < 1) + { + return null; + } + + return getEvolution().getRelease(previousVersion); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public int getVersion() + { + return (Integer)eDynamicGet(EvolutionPackage.RELEASE__VERSION, EvolutionPackage.Literals.RELEASE__VERSION, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setVersion(int newVersion) + { + eDynamicSet(EvolutionPackage.RELEASE__VERSION, EvolutionPackage.Literals.RELEASE__VERSION, newVersion); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + @SuppressWarnings("unchecked") + public EList<EPackage> getRootPackages() + { + return (EList<EPackage>)eDynamicGet(EvolutionPackage.RELEASE__ROOT_PACKAGES, EvolutionPackage.Literals.RELEASE__ROOT_PACKAGES, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Evolution getEvolution() + { + return (Evolution)eDynamicGet(EvolutionPackage.RELEASE__EVOLUTION, EvolutionPackage.Literals.RELEASE__EVOLUTION, true, true); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public NotificationChain basicSetEvolution(Evolution newEvolution, NotificationChain msgs) + { + msgs = eBasicSetContainer((InternalEObject)newEvolution, EvolutionPackage.RELEASE__EVOLUTION, msgs); + return msgs; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public void setEvolution(Evolution newEvolution) + { + eDynamicSet(EvolutionPackage.RELEASE__EVOLUTION, EvolutionPackage.Literals.RELEASE__EVOLUTION, newEvolution); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + @Override + public EList<EPackage> getAllPackages() + { + EcoreEList<EPackage> list = new EcoreEList<EPackage>(EPackage.class, this) + { + private static final long serialVersionUID = 1L; + + @Override + public int getFeatureID() + { + return EvolutionPackage.MODEL__ALL_PACKAGES; + } + }; + + for (EPackage rootPackage : getRootPackages()) + { + ModelImpl.collectAllPackages(rootPackage, list); + } + + return list; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseAdd(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.RELEASE__EVOLUTION: + if (eInternalContainer() != null) + { + msgs = eBasicRemoveFromContainer(msgs); + } + return basicSetEvolution((Evolution)otherEnd, msgs); + } + return super.eInverseAdd(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eInverseRemove(InternalEObject otherEnd, int featureID, NotificationChain msgs) + { + switch (featureID) + { + case EvolutionPackage.RELEASE__EVOLUTION: + return basicSetEvolution(null, msgs); + case EvolutionPackage.RELEASE__ROOT_PACKAGES: + return ((InternalEList<?>)getRootPackages()).basicRemove(otherEnd, msgs); + } + return super.eInverseRemove(otherEnd, featureID, msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public NotificationChain eBasicRemoveFromContainerFeature(NotificationChain msgs) + { + switch (eContainerFeatureID()) + { + case EvolutionPackage.RELEASE__EVOLUTION: + return eInternalContainer().eInverseRemove(this, EvolutionPackage.EVOLUTION__RELEASES, Evolution.class, msgs); + } + return super.eBasicRemoveFromContainerFeature(msgs); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public Object eGet(int featureID, boolean resolve, boolean coreType) + { + switch (featureID) + { + case EvolutionPackage.RELEASE__EVOLUTION: + return getEvolution(); + case EvolutionPackage.RELEASE__VERSION: + return getVersion(); + case EvolutionPackage.RELEASE__DATE: + return getDate(); + case EvolutionPackage.RELEASE__NEXT_RELEASE: + if (resolve) + { + return getNextRelease(); + } + return basicGetNextRelease(); + case EvolutionPackage.RELEASE__PREVIOUS_RELEASE: + if (resolve) + { + return getPreviousRelease(); + } + return basicGetPreviousRelease(); + case EvolutionPackage.RELEASE__ROOT_PACKAGES: + return getRootPackages(); + case EvolutionPackage.RELEASE__ALL_PACKAGES: + return getAllPackages(); + } + 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 EvolutionPackage.RELEASE__EVOLUTION: + setEvolution((Evolution)newValue); + return; + case EvolutionPackage.RELEASE__VERSION: + setVersion((Integer)newValue); + return; + case EvolutionPackage.RELEASE__DATE: + setDate((Date)newValue); + return; + case EvolutionPackage.RELEASE__ROOT_PACKAGES: + getRootPackages().clear(); + getRootPackages().addAll((Collection<? extends EPackage>)newValue); + return; + } + super.eSet(featureID, newValue); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public void eUnset(int featureID) + { + switch (featureID) + { + case EvolutionPackage.RELEASE__EVOLUTION: + setEvolution((Evolution)null); + return; + case EvolutionPackage.RELEASE__VERSION: + setVersion(VERSION_EDEFAULT); + return; + case EvolutionPackage.RELEASE__DATE: + setDate(DATE_EDEFAULT); + return; + case EvolutionPackage.RELEASE__ROOT_PACKAGES: + getRootPackages().clear(); + return; + } + super.eUnset(featureID); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public boolean eIsSet(int featureID) + { + switch (featureID) + { + case EvolutionPackage.RELEASE__EVOLUTION: + return getEvolution() != null; + case EvolutionPackage.RELEASE__VERSION: + return getVersion() != VERSION_EDEFAULT; + case EvolutionPackage.RELEASE__DATE: + return DATE_EDEFAULT == null ? getDate() != null : !DATE_EDEFAULT.equals(getDate()); + case EvolutionPackage.RELEASE__NEXT_RELEASE: + return basicGetNextRelease() != null; + case EvolutionPackage.RELEASE__PREVIOUS_RELEASE: + return basicGetPreviousRelease() != null; + case EvolutionPackage.RELEASE__ROOT_PACKAGES: + return !getRootPackages().isEmpty(); + case EvolutionPackage.RELEASE__ALL_PACKAGES: + return !getAllPackages().isEmpty(); + } + return super.eIsSet(featureID); + } + + public int compareTo(Release o) + { + return o.getVersion() - getVersion(); + } + + @Override + public void invalidateChange() + { + // Do nothing. + } + + @Override + public boolean containsElement(EModelElement modelElement) + { + return EcoreUtil.isAncestor(this, modelElement); + } + + @SuppressWarnings("unchecked") + @Override + public <T extends EModelElement> T getElement(String id) + { + if (idCache == null) + { + idCache = new HashMap<String, EModelElement>(); + + ElementHandler.execute(getRootPackages(), new ElementRunnable() + { + public void run(EModelElement modelElement) + { + String id = getElementID(modelElement); + idCache.put(id, modelElement); + } + }); + } + + return (T)idCache.get(id); + } + +} // ReleaseImpl diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/DiagnosticID.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/DiagnosticID.java new file mode 100644 index 0000000000..eaea7ad7cb --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/DiagnosticID.java @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.ecore.EModelElement; + +/** + * @author Eike Stepper + */ +public final class DiagnosticID +{ + private final String value; + + public DiagnosticID(String value) + { + this.value = value; + } + + public String getValue() + { + return value; + } + + @Override + public int hashCode() + { + return 31 + (value == null ? 0 : value.hashCode()); + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + { + return true; + } + + if (obj == null) + { + return false; + } + + if (getClass() != obj.getClass()) + { + return false; + } + + DiagnosticID other = (DiagnosticID)obj; + if (value == null) + { + if (other.value != null) + { + return false; + } + } + else if (!value.equals(other.value)) + { + return false; + } + + return true; + } + + @Override + public String toString() + { + return "DiagnosticID[" + value + "]"; + } + + public static DiagnosticID get(Diagnostic diagnostic) + { + for (Object data : diagnostic.getData()) + { + if (data instanceof DiagnosticID) + { + return (DiagnosticID)data; + } + } + + StringBuilder builder = new StringBuilder(); + builder.append(diagnostic.getSource()); + builder.append("|"); + builder.append(diagnostic.getCode()); + + for (Object data : diagnostic.getData()) + { + appendData(builder, data); + } + + return new DiagnosticID(builder.toString()); + } + + private static void appendData(final StringBuilder builder, Object data) + { + if (data instanceof Provider) + { + Provider provider = (Provider)data; + provider.extractDiagnosticData(new Provider.Context() + { + public void add(String data) + { + builder.append("|"); + builder.append(data); + } + }); + + return; + } + + if (data instanceof EModelElement) + { + EModelElement modelElement = (EModelElement)data; + String label = ElementHandler.getLabel(modelElement); + if (label != null) + { + builder.append("|"); + builder.append(label); + return; + } + } + } + + /** + * @author Eike Stepper + */ + public interface Provider + { + public void extractDiagnosticData(Context context); + + /** + * @author Eike Stepper + */ + public interface Context + { + public void add(String data); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/DiagnosticType.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/DiagnosticType.java new file mode 100644 index 0000000000..34e0bd4dba --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/DiagnosticType.java @@ -0,0 +1,110 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.common.util.Diagnostic; + +/** + * @author Eike Stepper + */ +public final class DiagnosticType +{ + private final String source; + + private final int code; + + public DiagnosticType(String source, int code) + { + this.source = source; + this.code = code; + } + + public String getSource() + { + return source; + } + + public int getCode() + { + return code; + } + + public boolean appliesTo(Diagnostic diagnostic) + { + return code == diagnostic.getCode() && source.equals(diagnostic.getSource()); + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + code; + result = prime * result + (source == null ? 0 : source.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) + { + if (this == obj) + { + return true; + } + + if (obj == null) + { + return false; + } + + if (getClass() != obj.getClass()) + { + return false; + } + + DiagnosticType other = (DiagnosticType)obj; + if (code != other.code) + { + return false; + } + + if (source == null) + { + if (other.source != null) + { + return false; + } + } + else if (!source.equals(other.source)) + { + return false; + } + + return true; + } + + @Override + public String toString() + { + StringBuilder builder = new StringBuilder(); + builder.append("DiagnosticType["); + builder.append(source); + builder.append(":"); + builder.append(code); + builder.append("]"); + return builder.toString(); + } + + public static DiagnosticType from(Diagnostic diagnostic) + { + return new DiagnosticType(diagnostic.getSource(), diagnostic.getCode()); + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ElementHandler.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ElementHandler.java new file mode 100644 index 0000000000..f5176925e4 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ElementHandler.java @@ -0,0 +1,465 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.cdo.evolution.ModelSet; + +import org.eclipse.emf.ecore.EAttribute; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EClassifier; +import org.eclipse.emf.ecore.EDataType; +import org.eclipse.emf.ecore.EEnum; +import org.eclipse.emf.ecore.EEnumLiteral; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EReference; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; + +import java.util.List; + +/** + * @author Eike Stepper + */ +public abstract class ElementHandler +{ + private static ElementHandler PACKAGE = new PackageHandler(); + + private static ElementHandler CLASS = new ClassHandler(); + + private static ElementHandler ATTRIBUTE = new AttributeHandler(); + + private static ElementHandler REFERENCE = new ReferenceHandler(); + + private static ElementHandler DATA_TYPE = new DataTypeHandler(); + + private static ElementHandler ENUM = new EnumHandler(); + + private static ElementHandler ENUM_LITERAL = new EnumLiteralHandler(); + + private static final EReference[] NO_CHILD_FEATURES = {}; + + private ElementHandler() + { + } + + public abstract EClass getEClass(); + + public EReference[] getChildFeatures() + { + return NO_CHILD_FEATURES; + } + + public boolean hasChildFeatures() + { + return getChildFeatures().length != 0; + } + + protected abstract String computeLabel(EModelElement element); + + public static ElementHandler getHandler(EClass eClass) + { + if (eClass.getEPackage() == EcorePackage.eINSTANCE) + { + switch (eClass.getClassifierID()) + { + case EcorePackage.EPACKAGE: + return PACKAGE; + + case EcorePackage.ECLASS: + return CLASS; + + case EcorePackage.EATTRIBUTE: + return ATTRIBUTE; + + case EcorePackage.EREFERENCE: + return REFERENCE; + + case EcorePackage.EDATA_TYPE: + return DATA_TYPE; + + case EcorePackage.EENUM: + return ENUM; + + case EcorePackage.EENUM_LITERAL: + return ENUM_LITERAL; + } + } + + return null; + } + + public static String getLabel(EModelElement element) + { + ElementHandler handler = getHandler(element.eClass()); + if (handler != null) + { + return handler.computeLabel(element); + } + + return String.valueOf(element); + } + + public static ModelSet getModelSet(EModelElement element) + { + EObject eContainer; + while ((eContainer = element.eContainer()) != null) + { + if (eContainer instanceof ModelSet) + { + return (ModelSet)eContainer; + } + } + + return null; + } + + public static void execute(EModelElement element, ElementRunnable runnable) + { + runnable.run(element); + + EClass eClass = element.eClass(); + ElementHandler handler = getHandler(eClass); + if (handler != null) + { + EReference[] childFeatures = handler.getChildFeatures(); + for (int i = 0; i < childFeatures.length; i++) + { + EReference childFeature = childFeatures[i]; + + List<?> children = (List<?>)element.eGet(childFeature); + for (Object child : children) + { + if (child instanceof EModelElement) + { + execute((EModelElement)child, runnable); + } + } + } + } + } + + public static void execute(List<? extends EModelElement> elements, ElementRunnable runnable) + { + for (EModelElement element : elements) + { + execute(element, runnable); + } + } + + public static void main(String[] args) + { + // dumpRelevantContainments(); + dumpManyValuedNonContainments(); + } + + private static void dumpRelevantContainments() + { + for (EClassifier eClassifier : EcorePackage.eINSTANCE.getEClassifiers()) + { + if (eClassifier instanceof EClass) + { + EClass eClass = (EClass)eClassifier; + + if (eClass == EcorePackage.Literals.EOPERATION) + { + continue; + } + + if (eClass == EcorePackage.Literals.EGENERIC_TYPE) + { + continue; + } + + if (eClass == EcorePackage.Literals.ETYPE_PARAMETER) + { + continue; + } + + boolean first = true; + for (EStructuralFeature eStructuralFeature : eClass.getEStructuralFeatures()) + { + if (eStructuralFeature instanceof EReference) + { + EReference eReference = (EReference)eStructuralFeature; + if (eReference.isContainment()) + { + if (eReference == EcorePackage.Literals.ECLASS__EOPERATIONS) + { + continue; + } + + if (eReference == EcorePackage.Literals.ECLASS__EGENERIC_SUPER_TYPES) + { + continue; + } + + if (eReference == EcorePackage.Literals.ECLASSIFIER__ETYPE_PARAMETERS) + { + continue; + } + + if (eReference == EcorePackage.Literals.ETYPED_ELEMENT__EGENERIC_TYPE) + { + continue; + } + + if (first) + { + System.out.println(eClass.getName()); + first = false; + } + + System.out.println(" " + eReference.getName() + (eReference.isDerived() ? " DERIVED" : "")); + } + } + } + } + } + } + + private static void dumpManyValuedNonContainments() + { + for (EClassifier eClassifier : EcorePackage.eINSTANCE.getEClassifiers()) + { + if (eClassifier instanceof EClass) + { + EClass eClass = (EClass)eClassifier; + + boolean first = true; + for (EStructuralFeature eStructuralFeature : eClass.getEStructuralFeatures()) + { + if (!eStructuralFeature.isMany()) + { + continue; + } + + if (eStructuralFeature instanceof EReference) + { + EReference eReference = (EReference)eStructuralFeature; + if (eReference.isContainment()) + { + continue; + } + } + + if (first) + { + System.out.println(eClass.getName()); + first = false; + } + + System.out.println(" " + eStructuralFeature.getName() + (eStructuralFeature.isDerived() ? " DERIVED" : "")); + } + } + } + } + + /** + * @author Eike Stepper + */ + private static final class PackageHandler extends ElementHandler + { + private static final EReference[] CHILDREN = { EcorePackage.Literals.EPACKAGE__ECLASSIFIERS, EcorePackage.Literals.EPACKAGE__ESUBPACKAGES }; + + @Override + public EClass getEClass() + { + return EcorePackage.Literals.EPACKAGE; + } + + @Override + public EReference[] getChildFeatures() + { + return CHILDREN; + } + + @Override + protected String computeLabel(EModelElement element) + { + EPackage ePackage = (EPackage)element; + EPackage eSuperPackage = ePackage.getESuperPackage(); + if (eSuperPackage != null) + { + return computeLabel(eSuperPackage) + "." + ePackage.getName(); + } + + return ePackage.getName(); + } + } + + /** + * @author Eike Stepper + */ + private static final class ClassHandler extends ElementHandler + { + private static final EReference[] CHILDREN = { EcorePackage.Literals.ECLASS__ESTRUCTURAL_FEATURES }; + + @Override + public EClass getEClass() + { + return EcorePackage.Literals.ECLASS; + } + + @Override + public EReference[] getChildFeatures() + { + return CHILDREN; + } + + @Override + protected String computeLabel(EModelElement element) + { + EClass eClass = (EClass)element; + EPackage ePackage = eClass.getEPackage(); + if (ePackage != null) + { + return getLabel(ePackage) + "." + eClass.getName(); + } + + return eClass.getName(); + } + } + + /** + * @author Eike Stepper + */ + private static class AttributeHandler extends ElementHandler + { + @Override + public EClass getEClass() + { + return EcorePackage.Literals.EATTRIBUTE; + } + + @Override + protected String computeLabel(EModelElement element) + { + EAttribute eAttribute = (EAttribute)element; + EClass eClass = eAttribute.getEContainingClass(); + if (eClass != null) + { + return getLabel(eClass) + "." + eAttribute.getName(); + } + + return eAttribute.getName(); + } + } + + /** + * @author Eike Stepper + */ + private static class ReferenceHandler extends ElementHandler + { + @Override + public EClass getEClass() + { + return EcorePackage.Literals.EREFERENCE; + } + + @Override + protected String computeLabel(EModelElement element) + { + EReference eReference = (EReference)element; + EClass eClass = eReference.getEContainingClass(); + if (eClass != null) + { + return getLabel(eClass) + "." + eReference.getName(); + } + + return eReference.getName(); + } + } + + /** + * @author Eike Stepper + */ + private static final class DataTypeHandler extends ElementHandler + { + @Override + public EClass getEClass() + { + return EcorePackage.Literals.EDATA_TYPE; + } + + @Override + protected String computeLabel(EModelElement element) + { + EDataType eDataType = (EDataType)element; + EPackage ePackage = eDataType.getEPackage(); + if (ePackage != null) + { + return getLabel(ePackage) + "." + eDataType.getName(); + } + + return eDataType.getName(); + } + } + + /** + * @author Eike Stepper + */ + private static final class EnumHandler extends ElementHandler + { + private static final EReference[] CHILDREN = { EcorePackage.Literals.EENUM__ELITERALS }; + + @Override + public EClass getEClass() + { + return EcorePackage.Literals.EENUM; + } + + @Override + public EReference[] getChildFeatures() + { + return CHILDREN; + } + + @Override + protected String computeLabel(EModelElement element) + { + EEnum eEnum = (EEnum)element; + EPackage ePackage = eEnum.getEPackage(); + if (ePackage != null) + { + return getLabel(ePackage) + "." + eEnum.getName(); + } + + return eEnum.getName(); + } + } + + /** + * @author Eike Stepper + */ + private static final class EnumLiteralHandler extends ElementHandler + { + @Override + public EClass getEClass() + { + return EcorePackage.Literals.EENUM_LITERAL; + } + + @Override + protected String computeLabel(EModelElement element) + { + EEnumLiteral eLiteral = (EEnumLiteral)element; + EEnum eEnum = eLiteral.getEEnum(); + if (eEnum != null) + { + return getLabel(eEnum) + "." + eLiteral.getName(); + } + + return eLiteral.getName(); + } + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ElementRunnable.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ElementRunnable.java new file mode 100644 index 0000000000..f5907cb02d --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ElementRunnable.java @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.ecore.EModelElement; + +/** + * @author Eike Stepper + */ +public interface ElementRunnable +{ + public void run(EModelElement modelElement); +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionAdapterFactory.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionAdapterFactory.java new file mode 100644 index 0000000000..c9a6d166f7 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionAdapterFactory.java @@ -0,0 +1,328 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; +import org.eclipse.emf.cdo.evolution.Migration; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; +import org.eclipse.emf.cdo.evolution.PropertyChange; +import org.eclipse.emf.cdo.evolution.Release; + +import org.eclipse.emf.common.notify.Adapter; +import org.eclipse.emf.common.notify.Notifier; +import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; +import org.eclipse.emf.ecore.EObject; + +/** + * <!-- begin-user-doc --> + * The <b>Adapter Factory</b> for the model. + * It provides an adapter <code>createXXX</code> method for each class of the model. + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage + * @generated + */ +public class EvolutionAdapterFactory extends AdapterFactoryImpl +{ + /** + * The cached model package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static EvolutionPackage modelPackage; + + /** + * Creates an instance of the adapter factory. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionAdapterFactory() + { + if (modelPackage == null) + { + modelPackage = EvolutionPackage.eINSTANCE; + } + } + + /** + * Returns whether this factory is applicable for the type of the object. + * <!-- begin-user-doc --> + * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model. + * <!-- end-user-doc --> + * @return whether this factory is applicable for the type of the object. + * @generated + */ + @Override + public boolean isFactoryForType(Object object) + { + if (object == modelPackage) + { + return true; + } + if (object instanceof EObject) + { + return ((EObject)object).eClass().getEPackage() == modelPackage; + } + return false; + } + + /** + * The switch that delegates to the <code>createXXX</code> methods. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected EvolutionSwitch<Adapter> modelSwitch = new EvolutionSwitch<Adapter>() + { + @Override + public Adapter caseModelSet(ModelSet object) + { + return createModelSetAdapter(); + } + + @Override + public Adapter caseModel(Model object) + { + return createModelAdapter(); + } + + @Override + public Adapter caseEvolution(Evolution object) + { + return createEvolutionAdapter(); + } + + @Override + public Adapter caseRelease(Release object) + { + return createReleaseAdapter(); + } + + @Override + public Adapter caseChange(Change object) + { + return createChangeAdapter(); + } + + @Override + public Adapter caseModelSetChange(ModelSetChange object) + { + return createModelSetChangeAdapter(); + } + + @Override + public Adapter caseElementChange(ElementChange object) + { + return createElementChangeAdapter(); + } + + @Override + public Adapter casePropertyChange(PropertyChange object) + { + return createPropertyChangeAdapter(); + } + + @Override + public Adapter caseMigration(Migration object) + { + return createMigrationAdapter(); + } + + @Override + public Adapter caseFeaturePathMigration(FeaturePathMigration object) + { + return createFeaturePathMigrationAdapter(); + } + + @Override + public Adapter defaultCase(EObject object) + { + return createEObjectAdapter(); + } + }; + + /** + * Creates an adapter for the <code>target</code>. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param target the object to adapt. + * @return the adapter for the <code>target</code>. + * @generated + */ + @Override + public Adapter createAdapter(Notifier target) + { + return modelSwitch.doSwitch((EObject)target); + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.ModelSet <em>Model Set</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.emf.cdo.evolution.ModelSet + * @generated + */ + public Adapter createModelSetAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.Model <em>Model</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.emf.cdo.evolution.Model + * @generated + */ + public Adapter createModelAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.Evolution <em>Evolution</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.emf.cdo.evolution.Evolution + * @generated + */ + public Adapter createEvolutionAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.Release <em>Release</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.emf.cdo.evolution.Release + * @generated + */ + public Adapter createReleaseAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.Change <em>Change</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.emf.cdo.evolution.Change + * @generated + */ + public Adapter createChangeAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.ModelSetChange <em>Model Set Change</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.emf.cdo.evolution.ModelSetChange + * @generated + */ + public Adapter createModelSetChangeAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.ElementChange <em>Element Change</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.emf.cdo.evolution.ElementChange + * @generated + */ + public Adapter createElementChangeAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.PropertyChange <em>Property Change</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.emf.cdo.evolution.PropertyChange + * @generated + */ + public Adapter createPropertyChangeAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.Migration <em>Migration</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.emf.cdo.evolution.Migration + * @generated + */ + public Adapter createMigrationAdapter() + { + return null; + } + + /** + * Creates a new adapter for an object of class '{@link org.eclipse.emf.cdo.evolution.FeaturePathMigration <em>Feature Path Migration</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.emf.cdo.evolution.FeaturePathMigration + * @generated + */ + public Adapter createFeaturePathMigrationAdapter() + { + return null; + } + + /** + * Creates a new adapter for the default case. + * <!-- begin-user-doc --> + * This default implementation returns null. + * <!-- end-user-doc --> + * @return the new adapter. + * @generated + */ + public Adapter createEObjectAdapter() + { + return null; + } + +} // EvolutionAdapterFactory diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionSwitch.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionSwitch.java new file mode 100644 index 0000000000..e630b1f7ef --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionSwitch.java @@ -0,0 +1,390 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; +import org.eclipse.emf.cdo.evolution.Migration; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; +import org.eclipse.emf.cdo.evolution.PropertyChange; +import org.eclipse.emf.cdo.evolution.Release; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.util.Switch; + +/** + * <!-- begin-user-doc --> + * The <b>Switch</b> for the model's inheritance hierarchy. + * It supports the call {@link #doSwitch(EObject) doSwitch(object)} + * to invoke the <code>caseXXX</code> method for each class of the model, + * starting with the actual class of the object + * and proceeding up the inheritance hierarchy + * until a non-null result is returned, + * which is the result of the switch. + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage + * @generated + */ +public class EvolutionSwitch<T> extends Switch<T> +{ + /** + * The cached model package + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected static EvolutionPackage modelPackage; + + /** + * Creates an instance of the switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionSwitch() + { + if (modelPackage == null) + { + modelPackage = EvolutionPackage.eINSTANCE; + } + } + + /** + * Checks whether this is a switch for the given package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @param ePackage the package in question. + * @return whether this is a switch for the given package. + * @generated + */ + @Override + protected boolean isSwitchFor(EPackage ePackage) + { + return ePackage == modelPackage; + } + + /** + * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @return the first non-null result returned by a <code>caseXXX</code> call. + * @generated + */ + @Override + protected T doSwitch(int classifierID, EObject theEObject) + { + switch (classifierID) + { + case EvolutionPackage.MODEL_SET: + { + ModelSet modelSet = (ModelSet)theEObject; + T result = caseModelSet(modelSet); + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.MODEL: + { + Model model = (Model)theEObject; + T result = caseModel(model); + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.EVOLUTION: + { + Evolution evolution = (Evolution)theEObject; + T result = caseEvolution(evolution); + if (result == null) + { + result = caseModelSet(evolution); + } + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.RELEASE: + { + Release release = (Release)theEObject; + T result = caseRelease(release); + if (result == null) + { + result = caseModelSet(release); + } + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.CHANGE: + { + Change change = (Change)theEObject; + T result = caseChange(change); + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.MODEL_SET_CHANGE: + { + ModelSetChange modelSetChange = (ModelSetChange)theEObject; + T result = caseModelSetChange(modelSetChange); + if (result == null) + { + result = caseChange(modelSetChange); + } + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.ELEMENT_CHANGE: + { + ElementChange elementChange = (ElementChange)theEObject; + T result = caseElementChange(elementChange); + if (result == null) + { + result = caseChange(elementChange); + } + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.PROPERTY_CHANGE: + { + PropertyChange propertyChange = (PropertyChange)theEObject; + T result = casePropertyChange(propertyChange); + if (result == null) + { + result = caseChange(propertyChange); + } + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.MIGRATION: + { + Migration migration = (Migration)theEObject; + T result = caseMigration(migration); + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + case EvolutionPackage.FEATURE_PATH_MIGRATION: + { + FeaturePathMigration featurePathMigration = (FeaturePathMigration)theEObject; + T result = caseFeaturePathMigration(featurePathMigration); + if (result == null) + { + result = caseMigration(featurePathMigration); + } + if (result == null) + { + result = defaultCase(theEObject); + } + return result; + } + default: + return defaultCase(theEObject); + } + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Model Set</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>Model Set</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseModelSet(ModelSet object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Model</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>Model</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseModel(Model object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Evolution</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>Evolution</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseEvolution(Evolution object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Release</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>Release</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseRelease(Release object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Change</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>Change</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseChange(Change object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Model Set Change</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>Model Set Change</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseModelSetChange(ModelSetChange object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Element Change</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>Element Change</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseElementChange(ElementChange object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Property Change</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>Property Change</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T casePropertyChange(PropertyChange object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Migration</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>Migration</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseMigration(Migration object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>Feature Path Migration</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>Feature Path Migration</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject) + * @generated + */ + public T caseFeaturePathMigration(FeaturePathMigration object) + { + return null; + } + + /** + * Returns the result of interpreting the object as an instance of '<em>EObject</em>'. + * <!-- begin-user-doc --> + * This implementation returns null; + * returning a non-null result will terminate the switch, but this is the last case anyway. + * <!-- end-user-doc --> + * @param object the target of the switch. + * @return the result of interpreting the object as an instance of '<em>EObject</em>'. + * @see #doSwitch(org.eclipse.emf.ecore.EObject) + * @generated + */ + @Override + public T defaultCase(EObject object) + { + return null; + } + +} // EvolutionSwitch diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionValidator.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionValidator.java new file mode 100644 index 0000000000..d16997899a --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/EvolutionValidator.java @@ -0,0 +1,1032 @@ +/** + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.ChangeKind; +import org.eclipse.emf.cdo.evolution.ElementChange; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.EvolutionPackage; +import org.eclipse.emf.cdo.evolution.FeaturePathMigration; +import org.eclipse.emf.cdo.evolution.Migration; +import org.eclipse.emf.cdo.evolution.Model; +import org.eclipse.emf.cdo.evolution.ModelSet; +import org.eclipse.emf.cdo.evolution.ModelSetChange; +import org.eclipse.emf.cdo.evolution.PropertyChange; +import org.eclipse.emf.cdo.evolution.Release; +import org.eclipse.emf.cdo.evolution.impl.EvolutionPlugin; + +import org.eclipse.net4j.util.collection.CollectionUtil; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.common.util.Diagnostic; +import org.eclipse.emf.common.util.DiagnosticChain; +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.ResourceLocator; +import org.eclipse.emf.common.util.URI; +import org.eclipse.emf.ecore.EClass; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.EStructuralFeature; +import org.eclipse.emf.ecore.EcorePackage; +import org.eclipse.emf.ecore.util.EObjectValidator; +import org.eclipse.emf.ecore.util.EcoreUtil.EqualityHelper; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + * <!-- begin-user-doc --> + * The <b>Validator</b> for the model. + * <!-- end-user-doc --> + * @see org.eclipse.emf.cdo.evolution.EvolutionPackage + * @generated + */ +public class EvolutionValidator extends EObjectValidator +{ + /** + * The cached model package + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public static final EvolutionValidator INSTANCE = new EvolutionValidator(); + + /** + * A constant for the {@link org.eclipse.emf.common.util.Diagnostic#getSource() source} of diagnostic {@link org.eclipse.emf.common.util.Diagnostic#getCode() codes} from this package. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @see org.eclipse.emf.common.util.Diagnostic#getSource() + * @see org.eclipse.emf.common.util.Diagnostic#getCode() + * @generated + */ + public static final String DIAGNOSTIC_SOURCE = "org.eclipse.emf.cdo.evolution"; + + /** + * A constant with a fixed name that can be used as the base value for additional hand written constants. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected static final int GENERATED_DIAGNOSTIC_CODE_COUNT = 0; + + public static final int CODE_NO_MODEL = GENERATED_DIAGNOSTIC_CODE_COUNT + 1; + + public static final int CODE_NO_URI = CODE_NO_MODEL + 1; + + public static final int CODE_NO_RESOURCE_SET = CODE_NO_URI + 1; + + public static final int CODE_RESOURCE_NOT_FOUND = CODE_NO_RESOURCE_SET + 1; + + public static final int CODE_LOAD_PROBLEM = CODE_RESOURCE_NOT_FOUND + 1; + + public static final int CODE_CONTENT_PROBLEM = CODE_LOAD_PROBLEM + 1; + + public static final int CODE_PACKAGE_MISSING = CODE_CONTENT_PROBLEM + 1; + + public static final int CODE_PACKAGE_NOT_UNIQUE = CODE_PACKAGE_MISSING + 1; + + public static final int CODE_NSURI_NOT_UNIQUE = CODE_PACKAGE_NOT_UNIQUE + 1; + + public static final int CODE_NSURI_NOT_CHANGED = CODE_NSURI_NOT_UNIQUE + 1; + + public static final int CODE_ID_ANNOTATION_MISSING = CODE_NSURI_NOT_CHANGED + 1; + + public static final int CODE_ID_WITHOUT_VALUE = CODE_ID_ANNOTATION_MISSING + 1; + + public static final int CODE_ID_NOT_UNIQUE = CODE_ID_WITHOUT_VALUE + 1; + + public static final int CODE_MIGRATION_UNUSED = CODE_ID_NOT_UNIQUE + 1; + + public static final int CODE_FEATURE_PATH_UNKNOWN = CODE_MIGRATION_UNUSED + 1; + + // Insert new codes above. + + public static final int CODE_UNCHANGED = CODE_FEATURE_PATH_UNKNOWN + 1; + + public static final int CODE_RELEASE = CODE_UNCHANGED + 1; + + /** + * A constant with a fixed name that can be used as the base value for additional hand written constants in a derived class. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + */ + protected static final int DIAGNOSTIC_CODE_COUNT = CODE_RELEASE; + + /** + * Creates an instance of the switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public EvolutionValidator() + { + super(); + } + + @Override + public boolean validate_EveryReferenceIsContained(EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return true; + } + + @Override + public boolean validate_EveryProxyResolves(EObject eObject, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return true; + } + + /** + * Returns the package of this validator switch. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + protected EPackage getEPackage() + { + return EvolutionPackage.eINSTANCE; + } + + /** + * Calls <code>validateXXX</code> for the corresponding classifier of the model. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + protected boolean validateGen(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) + { + switch (classifierID) + { + case EvolutionPackage.MODEL_SET: + return validateModelSet((ModelSet)value, diagnostics, context); + case EvolutionPackage.MODEL: + return validateModel((Model)value, diagnostics, context); + case EvolutionPackage.EVOLUTION: + return validateEvolution((Evolution)value, diagnostics, context); + case EvolutionPackage.RELEASE: + return validateRelease((Release)value, diagnostics, context); + case EvolutionPackage.CHANGE: + return validateChange((Change)value, diagnostics, context); + case EvolutionPackage.MODEL_SET_CHANGE: + return validateModelSetChange((ModelSetChange)value, diagnostics, context); + case EvolutionPackage.ELEMENT_CHANGE: + return validateElementChange((ElementChange)value, diagnostics, context); + case EvolutionPackage.PROPERTY_CHANGE: + return validatePropertyChange((PropertyChange)value, diagnostics, context); + case EvolutionPackage.MIGRATION: + return validateMigration((Migration)value, diagnostics, context); + case EvolutionPackage.FEATURE_PATH_MIGRATION: + return validateFeaturePathMigration((FeaturePathMigration)value, diagnostics, context); + case EvolutionPackage.CHANGE_KIND: + return validateChangeKind((ChangeKind)value, diagnostics, context); + case EvolutionPackage.URI: + return validateURI((URI)value, diagnostics, context); + default: + return true; + } + } + + @Override + protected boolean validate(int classifierID, Object value, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (diagnostics == null) + { + return true; + } + + if (context == null) + { + return true; + } + + return validateGen(classifierID, value, diagnostics, context); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateModelSetGen(ModelSet modelSet, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return validate_EveryDefaultConstraint(modelSet, diagnostics, context); + } + + public boolean validateModelSet(ModelSet modelSet, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.RELEASE)) + { + diagnostics.add( + createDiagnostic(Diagnostic.INFO, DIAGNOSTIC_SOURCE, CODE_RELEASE, "_UI_Release_diagnostic", new Object[] {}, new Object[] { modelSet }, context)); + return true; + } + + return validateModelSetGen(modelSet, diagnostics, context); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateModel(Model model, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (!validate_NoCircularContainment(model, diagnostics, context)) + { + return false; + } + boolean result = validate_EveryMultiplicityConforms(model, diagnostics, context); + if (result || diagnostics != null) + { + result &= validate_EveryDataValueConforms(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryReferenceIsContained(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryBidirectionalReferenceIsPaired(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryProxyResolves(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_UniqueID(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryKeyUnique(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryMapEntryUnique(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateModel_ModelLoaded(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateModel_IDs_Exist(model, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateModel_NamespaceReflectsChange(model, diagnostics, context); + } + return result; + } + + /** + * Validates the ModelLoaded constraint of '<em>Model</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category MODEL_AVAILABILITY + */ + public boolean validateModel_ModelLoaded(Model model, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.MODEL_AVAILABILITY)) + { + switch (model.getStatus()) + { + case NO_URI: + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_NO_URI, "_UI_NO_URI_diagnostic", new Object[] {}, + new Object[] { model, EvolutionPackage.Literals.MODEL__URI }, context)); + return false; + + case NO_RESOURCE_SET: + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_NO_RESOURCE_SET, "_UI_NO_RESOURCE_SET_diagnostic", new Object[] {}, + new Object[] { model }, context)); + return false; + + case RESOURCE_NOT_FOUND: + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_RESOURCE_NOT_FOUND, "_UI_RESOURCE_NOT_FOUND_diagnostic", + new Object[] { model.getURI().toString() }, new Object[] { model, EvolutionPackage.Literals.MODEL__URI }, context)); + return false; + + case LOAD_PROBLEM: + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_RESOURCE_NOT_FOUND, "_UI_LOAD_PROBLEM_diagnostic", + new Object[] { model.getURI().toString() }, new Object[] { model, EvolutionPackage.Literals.MODEL__URI }, context)); + return false; + + case CONTENT_PROBLEM: + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_CONTENT_PROBLEM, "_UI_CONTENT_PROBLEM_diagnostic", + new Object[] { model.getURI().toString() }, new Object[] { model, EvolutionPackage.Literals.MODEL__URI }, context)); + return false; + } + } + + return true; + } + + /** + * Validates the IDs_Exist constraint of '<em>Model</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category IDENTITY_COMPLETENESS + */ + public boolean validateModel_IDs_Exist(Model model, final DiagnosticChain diagnostics, final Map<Object, Object> context) + { + ValidationContext validationContext = ValidationContext.getFrom(context); + if (validationContext != null && validationContext.getPhase() == ValidationPhase.IDENTITY_COMPLETENESS) + { + final Map<String, Object> identifiedElements = validationContext.getIdentifiedElements(); + EPackage rootPackage = model.getRootPackage(); + + final boolean[] result = { true }; + ElementHandler.execute(rootPackage, new ElementRunnable() + { + public void run(EModelElement modelElement) + { + if (IDAnnotation.getFrom(modelElement, false) == null) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_ID_ANNOTATION_MISSING, "_UI_IDsExist_AnnotationMissing_diagnostic", + new Object[] {}, new Object[] { modelElement, EcorePackage.Literals.EMODEL_ELEMENT__EANNOTATIONS }, context)); + result[0] = false; + } + else + { + String value = IDAnnotation.getValue(modelElement); + if (value == null) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_ID_WITHOUT_VALUE, "_UI_IDsExist_NoValue_diagnostic", new Object[] {}, + new Object[] { modelElement, EcorePackage.Literals.EMODEL_ELEMENT__EANNOTATIONS }, context)); + result[0] = false; + } + else + { + Object element = identifiedElements.get(value); + if (element == null) + { + identifiedElements.put(value, modelElement); + } + else if (element instanceof List<?>) + { + @SuppressWarnings("unchecked") + List<EModelElement> elements = (List<EModelElement>)element; + elements.add(modelElement); + } + else + { + List<EModelElement> elements = new ArrayList<EModelElement>(); + elements.add((EModelElement)element); + elements.add(modelElement); + identifiedElements.put(value, elements); + } + } + } + } + }); + + return result[0]; + } + return true; + } + + /** + * Validates the NamespaceReflectsChange constraint of '<em>Model</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category MODEL_UNIQUENESS + */ + public boolean validateModel_NamespaceReflectsChange(Model model, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.MODEL_UNIQUENESS)) + { + Evolution evolution = model.getEvolution(); + if (evolution.isUniqueNamespaces()) + { + Map<String, Set<EPackage>> releasedPackages = evolution.getReleasedPackages(); + boolean result = true; + + for (EPackage ePackage : model.getAllPackages()) + { + Set<EPackage> set = releasedPackages.get(ePackage.getNsURI()); + if (set != null) + { + for (EPackage releasedPackage : set) + { + EqualityHelper equalityHelper = new EqualityHelper() + { + private static final long serialVersionUID = 1L; + + @Override + protected boolean haveEqualFeature(EObject eObject1, EObject eObject2, EStructuralFeature feature) + { + if (feature == EcorePackage.Literals.EPACKAGE__ESUBPACKAGES) + { + // Compare packages without their subpackages. + return true; + } + + return super.haveEqualFeature(eObject1, eObject2, feature); + } + }; + + if (!equalityHelper.equals(ePackage, releasedPackage)) + { + Release release = (Release)ElementHandler.getModelSet(releasedPackage); + + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_NSURI_NOT_CHANGED, "_UI_NsUriMustChange_diagnostic", + new Object[] { ePackage.getNsURI(), release.getVersion() }, + new Object[] { ePackage, EcorePackage.Literals.EPACKAGE__NS_URI, releasedPackage, evolution }, context)); + result = false; + break; + } + } + } + } + + return result; + } + } + + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateEvolutionGen(Evolution evolution, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (!validate_NoCircularContainment(evolution, diagnostics, context)) + { + return false; + } + boolean result = validate_EveryMultiplicityConforms(evolution, diagnostics, context); + if (result || diagnostics != null) + { + result &= validate_EveryDataValueConforms(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryReferenceIsContained(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryBidirectionalReferenceIsPaired(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryProxyResolves(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_UniqueID(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryKeyUnique(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryMapEntryUnique(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateEvolution_NotEmpty(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateEvolution_PackagesUnique(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateEvolution_NoMissingPackages(evolution, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateEvolution_IDsUnique(evolution, diagnostics, context); + } + return result; + } + + public boolean validateEvolution(Evolution evolution, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.RELEASE)) + { + ModelSetChange change = evolution.getChange(); + + if (change == null || change.getChildren().isEmpty()) + { + Release latestRelease = evolution.getLatestRelease(); + if (latestRelease == null) + { + diagnostics.add(createDiagnostic(Diagnostic.INFO, DIAGNOSTIC_SOURCE, CODE_UNCHANGED, "_UI_Unchanged_diagnostic", new Object[] {}, + new Object[] { evolution }, context)); + } + else + { + diagnostics.add(createDiagnostic(Diagnostic.INFO, DIAGNOSTIC_SOURCE, CODE_UNCHANGED, "_UI_UnchangedSince_diagnostic", + new Object[] { latestRelease.getVersion() }, new Object[] { evolution }, context)); + } + } + else + { + diagnostics.add( + createDiagnostic(Diagnostic.INFO, DIAGNOSTIC_SOURCE, CODE_RELEASE, "_UI_Release_diagnostic", new Object[] {}, new Object[] { evolution }, context)); + } + return true; + } + + return validateEvolutionGen(evolution, diagnostics, context); + } + + /** + * Validates the NotEmpty constraint of '<em>Evolution</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category MODEL_AVAILABILITY + */ + public boolean validateEvolution_NotEmpty(Evolution evolution, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.MODEL_AVAILABILITY)) + { + if (evolution.getModels().isEmpty()) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_NO_MODEL, "_UI_NoModel_diagnostic", new Object[] {}, + new Object[] { evolution }, context)); + return false; + } + } + + return true; + } + + /** + * Validates the PackagesUnique constraint of '<em>Evolution</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category MODEL_UNIQUENESS + */ + public boolean validateEvolution_PackagesUnique(Evolution evolution, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.MODEL_UNIQUENESS)) + { + boolean result = true; + + Map<URI, Set<Model>> models = new HashMap<URI, Set<Model>>(); + for (Model model : evolution.getModels()) + { + CollectionUtil.add(models, model.getURI(), model); + } + + for (Set<Model> set : models.values()) + { + if (set.size() > 1) + { + for (Model model : set) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_PACKAGE_NOT_UNIQUE, "_UI_PackageNotUnique_diagnostic", + new Object[] { model.getURI().toString() }, new Object[] { model, EvolutionPackage.Literals.MODEL__URI, model.getURI() }, context)); + result = false; + } + } + } + + Map<String, Set<EPackage>> packages = new HashMap<String, Set<EPackage>>(); + for (EPackage ePackage : evolution.getAllPackages()) + { + CollectionUtil.add(packages, ePackage.getNsURI(), ePackage); + } + + for (Set<EPackage> set : packages.values()) + { + if (set.size() > 1) + { + for (EPackage ePackage : set) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_NSURI_NOT_UNIQUE, "_UI_NsuriNotUnique_diagnostic", + new Object[] { ePackage.getNsURI() }, new Object[] { ePackage, EcorePackage.Literals.EPACKAGE__NS_URI, ePackage.getNsURI() }, context)); + result = false; + } + } + } + + return result; + } + + return true; + } + + /** + * Validates the NoMissingPackages constraint of '<em>Evolution</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category MODEL_INTEGRITY + */ + public boolean validateEvolution_NoMissingPackages(Evolution evolution, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.MODEL_INTEGRITY)) + { + EList<EPackage> missingPackages = evolution.getMissingPackages(); + if (missingPackages.size() != 0) + { + for (EPackage missingPackage : missingPackages) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_PACKAGE_MISSING, "_UI_MissingPackage_diagnostic", + new Object[] { missingPackage.getName() }, new Object[] { evolution, EvolutionPackage.Literals.EVOLUTION__MISSING_PACKAGES, missingPackage }, + context)); + } + + return false; + } + } + + return true; + } + + /** + * Validates the IDsUnique constraint of '<em>Evolution</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category IDENTITY_UNIQUENESS + */ + public boolean validateEvolution_IDsUnique(Evolution evolution, DiagnosticChain diagnostics, Map<Object, Object> context) + { + // TODO Validate oldValue. + // TODO Validate oldElement.eClass() == newElement.eClass(). + int xxx; + + ValidationContext validationContext = ValidationContext.getFrom(context); + if (validationContext != null && validationContext.getPhase() == ValidationPhase.IDENTITY_UNIQUENESS) + { + boolean result = true; + for (Map.Entry<String, Object> entry : validationContext.getIdentifiedElements().entrySet()) + { + Object element = entry.getValue(); + if (element instanceof List<?>) + { + String id = entry.getKey(); + + @SuppressWarnings("unchecked") + List<EModelElement> elements = (List<EModelElement>)element; + for (EModelElement modelElement : elements) + { + List<Object> data = new ArrayList<Object>(); + data.add(modelElement); + data.add(EcorePackage.Literals.EMODEL_ELEMENT__EANNOTATIONS); + data.add(id); + + for (EModelElement conflictingElement : elements) + { + if (conflictingElement != modelElement) + { + data.add(conflictingElement); + } + } + + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_ID_NOT_UNIQUE, "_UI_IDNotUnique_diagnostic", new Object[] { id }, + data.toArray(new Object[data.size()]), context)); + result = false; + } + } + } + + return result; + } + + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateRelease(Release release, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return validate_EveryDefaultConstraint(release, diagnostics, context); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateChange(Change change, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return validate_EveryDefaultConstraint(change, diagnostics, context); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateModelSetChange(ModelSetChange modelSetChange, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return validate_EveryDefaultConstraint(modelSetChange, diagnostics, context); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateElementChange(ElementChange elementChange, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (!validate_NoCircularContainment(elementChange, diagnostics, context)) + { + return false; + } + boolean result = validate_EveryMultiplicityConforms(elementChange, diagnostics, context); + if (result || diagnostics != null) + { + result &= validate_EveryDataValueConforms(elementChange, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryReferenceIsContained(elementChange, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryBidirectionalReferenceIsPaired(elementChange, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryProxyResolves(elementChange, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_UniqueID(elementChange, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryKeyUnique(elementChange, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryMapEntryUnique(elementChange, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateElementChange_FeaturePathIsKnown(elementChange, diagnostics, context); + } + return result; + } + + /** + * Validates the FeaturePathIsKnown constraint of '<em>Element Change</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category CHANGE_VALIDITY + */ + public boolean validateElementChange_FeaturePathIsKnown(ElementChange elementChange, DiagnosticChain diagnostics, Map<Object, Object> context) + { + ValidationContext validationContext = ValidationContext.getFrom(context); + if (validationContext != null && validationContext.getPhase() == ValidationPhase.CHANGE_VALIDITY) + { + ChangeKind kind = elementChange.getKind(); + if (kind == ChangeKind.COPIED || kind == ChangeKind.MOVED) + { + EModelElement newElement = elementChange.getNewElement(); + if (newElement instanceof EStructuralFeature) + { + EStructuralFeature newFeature = (EStructuralFeature)newElement; + EStructuralFeature oldFeature = (EStructuralFeature)elementChange.getOldElement(); + + EClass newContainingClass = newFeature.getEContainingClass(); + EClass oldContainingClass = oldFeature.getEContainingClass(); + if (elementChange.getOldElementFor(newContainingClass) != oldContainingClass) + { + BasicDiagnostic diagnostic = createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_FEATURE_PATH_UNKNOWN, "_UI_FeaturePathIsKnown_diagnostic", + new Object[] { ElementHandler.getLabel(newFeature), kind.getName().toLowerCase(), ElementHandler.getLabel(oldFeature) }, + new Object[] { elementChange, newFeature }, context); + + Evolution evolution = validationContext.getEvolution(); + DiagnosticID diagnosticID = DiagnosticID.get(diagnostic); + + Migration migration = evolution.getMigration(diagnosticID.getValue()); + if (migration != null) + { + validationContext.getUsedMigrations().put(diagnosticID, migration); + return true; + } + + diagnostics.add(diagnostic); + return false; + } + } + } + } + + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validatePropertyChange(PropertyChange propertyChange, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return validate_EveryDefaultConstraint(propertyChange, diagnostics, context); + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateMigration(Migration migration, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (!validate_NoCircularContainment(migration, diagnostics, context)) + { + return false; + } + boolean result = validate_EveryMultiplicityConforms(migration, diagnostics, context); + if (result || diagnostics != null) + { + result &= validate_EveryDataValueConforms(migration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryReferenceIsContained(migration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryBidirectionalReferenceIsPaired(migration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryProxyResolves(migration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_UniqueID(migration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryKeyUnique(migration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryMapEntryUnique(migration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateMigration_NotObsolete(migration, diagnostics, context); + } + return result; + } + + /** + * Validates the NotObsolete constraint of '<em>Migration</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category MIGRATION_OBSOLETENESS + */ + public boolean validateMigration_NotObsolete(Migration migration, DiagnosticChain diagnostics, Map<Object, Object> context) + { + ValidationContext validationContext = ValidationContext.getFrom(context); + if (validationContext != null && validationContext.getPhase() == ValidationPhase.MIGRATION_OBSOLETENESS) + { + String idValue = migration.getDiagnosticID(); + if (idValue != null && idValue.length() != 0) + { + DiagnosticID diagnosticID = new DiagnosticID(idValue); + if (!validationContext.getUsedMigrations().containsKey(diagnosticID)) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, CODE_MIGRATION_UNUSED, "_UI_MigrationUnused_diagnostic", + new Object[] { migration }, new Object[] { migration, diagnosticID }, context)); + return false; + } + } + } + + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateFeaturePathMigration(FeaturePathMigration featurePathMigration, DiagnosticChain diagnostics, Map<Object, Object> context) + { + if (!validate_NoCircularContainment(featurePathMigration, diagnostics, context)) + { + return false; + } + boolean result = validate_EveryMultiplicityConforms(featurePathMigration, diagnostics, context); + if (result || diagnostics != null) + { + result &= validate_EveryDataValueConforms(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryReferenceIsContained(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryBidirectionalReferenceIsPaired(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryProxyResolves(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_UniqueID(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryKeyUnique(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validate_EveryMapEntryUnique(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateMigration_NotObsolete(featurePathMigration, diagnostics, context); + } + if (result || diagnostics != null) + { + result &= validateFeaturePathMigration_NewFeatureReachable(featurePathMigration, diagnostics, context); + } + return result; + } + + /** + * Validates the NewFeatureReachable constraint of '<em>Feature Path Migration</em>'. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated NOT + * @category MIGRATION_VALIDITY + */ + public boolean validateFeaturePathMigration_NewFeatureReachable(FeaturePathMigration featurePathMigration, DiagnosticChain diagnostics, + Map<Object, Object> context) + { + if (ValidationContext.isPhase(context, ValidationPhase.MIGRATION_VALIDITY)) + { + } + // TODO implement the constraint + // -> specify the condition that violates the constraint + // -> verify the diagnostic details, including severity, code, and message + // Ensure that you remove @generated or mark it @generated NOT + if (false) + { + if (diagnostics != null) + { + diagnostics.add(createDiagnostic(Diagnostic.ERROR, DIAGNOSTIC_SOURCE, 0, "_UI_GenericConstraint_diagnostic", + new Object[] { "NewFeatureReachable", getObjectLabel(featurePathMigration, context) }, new Object[] { featurePathMigration }, context)); + } + return false; + } + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateChangeKind(ChangeKind changeKind, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return true; + } + + /** + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + public boolean validateURI(URI uri, DiagnosticChain diagnostics, Map<Object, Object> context) + { + return true; + } + + /** + * Returns the resource locator that will be used to fetch messages for this validator's diagnostics. + * <!-- begin-user-doc --> + * <!-- end-user-doc --> + * @generated + */ + @Override + public ResourceLocator getResourceLocator() + { + return EvolutionPlugin.INSTANCE; + } + +} // EvolutionValidator diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/IDAnnotation.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/IDAnnotation.java new file mode 100644 index 0000000000..961921345c --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/IDAnnotation.java @@ -0,0 +1,151 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.common.util.EList; +import org.eclipse.emf.common.util.EMap; +import org.eclipse.emf.ecore.EAnnotation; +import org.eclipse.emf.ecore.EModelElement; +import org.eclipse.emf.ecore.EcoreFactory; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import java.util.ListIterator; + +/** + * @author Eike Stepper + */ +public class IDAnnotation +{ + public static final String SOURCE = "http://www.eclipse.org/CDO/evolution/ID"; + + public static final String VALUE_KEY = "value"; + + public static final String OLD_VALUE_KEY = "oldValue"; + + public static EAnnotation getFrom(EModelElement element, boolean createOnDemand) + { + EList<EAnnotation> annotations = element.getEAnnotations(); + for (ListIterator<EAnnotation> it = annotations.listIterator(); it.hasNext();) + { + EAnnotation annotation = it.next(); + if (SOURCE.equals(annotation.getSource())) + { + return annotation; + } + } + + if (createOnDemand) + { + EAnnotation annotation = EcoreFactory.eINSTANCE.createEAnnotation(); + annotation.setSource(IDAnnotation.SOURCE); + annotations.add(annotation); + return annotation; + } + + return null; + } + + public static boolean removeFrom(EModelElement element) + { + boolean removed = false; + + for (ListIterator<EAnnotation> it = element.getEAnnotations().listIterator(); it.hasNext();) + { + EAnnotation annotation = it.next(); + if (IDAnnotation.SOURCE.equals(annotation.getSource())) + { + it.remove(); + removed = true; + } + } + + return removed; + } + + public static String getOldValue(EModelElement element) + { + EAnnotation annotation = getFrom(element, false); + if (annotation != null) + { + return annotation.getDetails().get(OLD_VALUE_KEY); + } + + return null; + } + + public static String setOldValue(EModelElement element, String oldValue) + { + EAnnotation annotation = getFrom(element, true); + if (oldValue == null || oldValue.length() == 0) + { + oldValue = annotation.getDetails().get(OLD_VALUE_KEY); + annotation.getDetails().remove(OLD_VALUE_KEY); + return oldValue; + } + + return annotation.getDetails().put(OLD_VALUE_KEY, oldValue); + } + + public static String getValue(EModelElement element) + { + return getValue(element, false); + } + + public static String getValue(EModelElement element, boolean considerOldValue) + { + EAnnotation annotation = getFrom(element, false); + if (annotation != null) + { + EMap<String, String> details = annotation.getDetails(); + if (considerOldValue) + { + String oldValue = details.get(OLD_VALUE_KEY); + if (oldValue != null && oldValue.length() != 0) + { + return oldValue; + } + } + + return details.get(VALUE_KEY); + } + + return null; + } + + public static String setValue(EModelElement element, String value) + { + EAnnotation annotation = getFrom(element, true); + if (value == null || value.length() == 0) + { + value = annotation.getDetails().get(VALUE_KEY); + annotation.getDetails().remove(VALUE_KEY); + return value; + } + + return annotation.getDetails().put(VALUE_KEY, value); + } + + public static String ensureValue(EModelElement element) + { + EAnnotation annotation = getFrom(element, true); + EMap<String, String> details = annotation.getDetails(); + + String value = details.get(VALUE_KEY); + if (value != null && value.length() != 0) + { + return null; + } + + value = EcoreUtil.generateUUID(); + details.put(VALUE_KEY, value); + return value; + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ValidationContext.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ValidationContext.java new file mode 100644 index 0000000000..002f90a3c2 --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ValidationContext.java @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.Migration; + +import org.eclipse.emf.common.util.BasicDiagnostic; +import org.eclipse.emf.ecore.resource.Resource; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author Eike Stepper + */ +public final class ValidationContext +{ + private static final String KEY = ValidationContext.class.getName(); + + private final Evolution evolution; + + private ValidationPhase phase; + + private final Map<Resource, BasicDiagnostic> resourceDiagnostics = new HashMap<Resource, BasicDiagnostic>(); + + private final Map<String, Object> identifiedElements = new HashMap<String, Object>(); + + private final Map<DiagnosticID, Migration> usedMigrations = new HashMap<DiagnosticID, Migration>(); + + public ValidationContext(Evolution evolution) + { + this.evolution = evolution; + phase = ValidationPhase.values()[0]; + } + + public Evolution getEvolution() + { + return evolution; + } + + public ValidationPhase getPhase() + { + return phase; + } + + public void setPhase(ValidationPhase phase) + { + this.phase = phase; + } + + public Map<Resource, BasicDiagnostic> getResourceDiagnostics() + { + return resourceDiagnostics; + } + + public Map<String, Object> getIdentifiedElements() + { + return identifiedElements; + } + + public Map<DiagnosticID, Migration> getUsedMigrations() + { + return usedMigrations; + } + + public void putInto(Map<Object, Object> context) + { + context.put(KEY, this); + } + + public static ValidationContext getFrom(Map<Object, Object> context) + { + Object contextObject = context.get(KEY); + if (contextObject instanceof ValidationContext) + { + return (ValidationContext)contextObject; + } + + return null; + } + + public static void removeFrom(Map<Object, Object> context) + { + context.remove(KEY); + } + + public static boolean isPhase(Map<Object, Object> context, ValidationPhase phase) + { + ValidationContext validationContext = getFrom(context); + return validationContext != null && validationContext.getPhase() == phase; + } +} diff --git a/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ValidationPhase.java b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ValidationPhase.java new file mode 100644 index 0000000000..1b2c86cbaf --- /dev/null +++ b/plugins/org.eclipse.emf.cdo.evolution/src/org/eclipse/emf/cdo/evolution/util/ValidationPhase.java @@ -0,0 +1,191 @@ +/* + * Copyright (c) 2004-2018 Eike Stepper (Loehne, Germany) and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * Eike Stepper - initial API and implementation + */ +package org.eclipse.emf.cdo.evolution.util; + +import org.eclipse.emf.cdo.evolution.Change; +import org.eclipse.emf.cdo.evolution.Evolution; +import org.eclipse.emf.cdo.evolution.Migration; + +import org.eclipse.emf.ecore.EObject; +import org.eclipse.emf.ecore.EPackage; +import org.eclipse.emf.ecore.util.Diagnostician; +import org.eclipse.emf.ecore.util.EcoreUtil; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Map; + +/** + * @author Eike Stepper + */ +public enum ValidationPhase +{ + MODEL_AVAILABILITY + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + if (eObject == evolution) + { + return evolution.getModels(); + } + + return Collections.emptyList(); + } + }, + + MODEL_UNIQUENESS + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + if (eObject == evolution) + { + return evolution.getModels(); + } + + return Collections.emptyList(); + } + }, + + MODEL_INTEGRITY + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + return Collections.emptyList(); + } + }, + + MODEL_VALIDITY + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + if (eObject == evolution) + { + return evolution.getRootPackages(); + } + + if (isPackageElement(evolution, eObject)) + { + return super.getContentsToValidate(diagnostician, evolution, eObject, context); + } + + return Collections.emptyList(); + } + }, + + IDENTITY_COMPLETENESS + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + return MODEL_AVAILABILITY.getContentsToValidate(diagnostician, evolution, eObject, context); + } + }, + + IDENTITY_UNIQUENESS + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + return Collections.emptyList(); + } + }, + + CHANGE_VALIDITY + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + if (eObject == evolution) + { + return Collections.singletonList(evolution.getChange()); + } + + if (eObject instanceof Change) + { + Change change = (Change)eObject; + if (EcoreUtil.isAncestor(evolution.getChange(), change)) + { + return change.getChildren(); + } + } + + return Collections.emptyList(); + } + }, + + MIGRATION_OBSOLETENESS + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + if (eObject == evolution) + { + return evolution.getMigrations(); + } + + return Collections.emptyList(); + } + }, + + MIGRATION_VALIDITY + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + if (eObject == evolution) + { + return evolution.getMigrations(); + } + + if (eObject instanceof Migration) + { + return super.getContentsToValidate(diagnostician, evolution, eObject, context); + } + + return Collections.emptyList(); + } + }, + + RELEASE + { + @Override + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + return Collections.emptyList(); + } + }; + + public static final List<ValidationPhase> ALL = Arrays.asList(ValidationPhase.values()); + + public List<? extends EObject> getContentsToValidate(Diagnostician diagnostician, Evolution evolution, EObject eObject, Map<Object, Object> context) + { + return eObject.eContents(); + } + + private static boolean isPackageElement(Evolution evolution, EObject eObject) + { + EObject rootContainer = EcoreUtil.getRootContainer(eObject); + for (EPackage rootPackage : evolution.getRootPackages()) + { + if (rootContainer == rootPackage) + { + return true; + } + } + + return false; + } +} diff --git a/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF b/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF index afff752c79..cc9efeacf5 100644 --- a/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.emf.cdo/META-INF/MANIFEST.MF @@ -71,7 +71,8 @@ Export-Package: org.eclipse.emf.cdo;version="4.6.200", x-friends:="org.eclipse.emf.cdo.net4j, org.eclipse.emf.cdo.server, org.eclipse.emf.cdo.tests, - org.eclipse.emf.cdo.ui", + org.eclipse.emf.cdo.ui, + org.eclipse.emf.cdo.evolution", org.eclipse.emf.internal.cdo.view;version="4.6.200"; x-friends:="org.eclipse.emf.cdo.net4j, org.eclipse.emf.cdo.server, diff --git a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF index 94d4b2ff08..4df488a5b0 100644 --- a/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF +++ b/plugins/org.eclipse.net4j.util/META-INF/MANIFEST.MF @@ -1,7 +1,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-SymbolicName: org.eclipse.net4j.util;singleton:=true -Bundle-Version: 3.8.0.qualifier +Bundle-Version: 3.9.0.qualifier Bundle-Name: %pluginName Bundle-Vendor: %providerName Bundle-Localization: plugin @@ -15,35 +15,35 @@ Import-Package: org.eclipse.osgi.service.debug;version="[1.0.0,2.0.0)";resolutio org.osgi.framework;version="[1.3.0,2.0.0)";resolution:=optional, org.osgi.service.log;version="[1.3.0,2.0.0)";resolution:=optional, org.osgi.util.tracker;version="[1.3.0,2.0.0)";resolution:=optional -Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.8.0";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests", - org.eclipse.net4j.internal.util.container;version="3.8.0";x-internal:=true, - org.eclipse.net4j.internal.util.factory;version="3.8.0";x-internal:=true, - org.eclipse.net4j.internal.util.om;version="3.8.0";x-internal:=true, - org.eclipse.net4j.internal.util.om.pref;version="3.8.0";x-internal:=true, - org.eclipse.net4j.internal.util.table;version="3.8.0";x-internal:=true, - org.eclipse.net4j.internal.util.test;version="3.8.0";x-friends:="org.eclipse.net4j.tests", - org.eclipse.net4j.util;version="3.8.0", - org.eclipse.net4j.util.cache;version="3.8.0", - org.eclipse.net4j.util.collection;version="3.8.0", - org.eclipse.net4j.util.concurrent;version="3.8.0", - org.eclipse.net4j.util.confirmation;version="3.8.0", - org.eclipse.net4j.util.container;version="3.8.0", - org.eclipse.net4j.util.container.delegate;version="3.8.0", - org.eclipse.net4j.util.event;version="3.8.0", - org.eclipse.net4j.util.factory;version="3.8.0", - org.eclipse.net4j.util.fsm;version="3.8.0", - org.eclipse.net4j.util.io;version="3.8.0", - org.eclipse.net4j.util.lifecycle;version="3.8.0", - org.eclipse.net4j.util.om;version="3.8.0", - org.eclipse.net4j.util.om.log;version="3.8.0", - org.eclipse.net4j.util.om.monitor;version="3.8.0", - org.eclipse.net4j.util.om.pref;version="3.8.0", - org.eclipse.net4j.util.om.trace;version="3.8.0", - org.eclipse.net4j.util.options;version="3.8.0", - org.eclipse.net4j.util.properties;version="3.8.0", - org.eclipse.net4j.util.ref;version="3.8.0", - org.eclipse.net4j.util.registry;version="3.8.0", - org.eclipse.net4j.util.security;version="3.8.0", - org.eclipse.net4j.util.transaction;version="3.8.0" +Export-Package: org.eclipse.net4j.internal.util.bundle;version="3.9.0";x-friends:="org.eclipse.net4j.util.ui,org.eclipse.net4j.tests", + org.eclipse.net4j.internal.util.container;version="3.9.0";x-internal:=true, + org.eclipse.net4j.internal.util.factory;version="3.9.0";x-internal:=true, + org.eclipse.net4j.internal.util.om;version="3.9.0";x-internal:=true, + org.eclipse.net4j.internal.util.om.pref;version="3.9.0";x-internal:=true, + org.eclipse.net4j.internal.util.table;version="3.9.0";x-internal:=true, + org.eclipse.net4j.internal.util.test;version="3.9.0";x-friends:="org.eclipse.net4j.tests", + org.eclipse.net4j.util;version="3.9.0", + org.eclipse.net4j.util.cache;version="3.9.0", + org.eclipse.net4j.util.collection;version="3.9.0", + org.eclipse.net4j.util.concurrent;version="3.9.0", + org.eclipse.net4j.util.confirmation;version="3.9.0", + org.eclipse.net4j.util.container;version="3.9.0", + org.eclipse.net4j.util.container.delegate;version="3.9.0", + org.eclipse.net4j.util.event;version="3.9.0", + org.eclipse.net4j.util.factory;version="3.9.0", + org.eclipse.net4j.util.fsm;version="3.9.0", + org.eclipse.net4j.util.io;version="3.9.0", + org.eclipse.net4j.util.lifecycle;version="3.9.0", + org.eclipse.net4j.util.om;version="3.9.0", + org.eclipse.net4j.util.om.log;version="3.9.0", + org.eclipse.net4j.util.om.monitor;version="3.9.0", + org.eclipse.net4j.util.om.pref;version="3.9.0", + org.eclipse.net4j.util.om.trace;version="3.9.0", + org.eclipse.net4j.util.options;version="3.9.0", + org.eclipse.net4j.util.properties;version="3.9.0", + org.eclipse.net4j.util.ref;version="3.9.0", + org.eclipse.net4j.util.registry;version="3.9.0", + org.eclipse.net4j.util.security;version="3.9.0", + org.eclipse.net4j.util.transaction;version="3.9.0" Eclipse-BuddyPolicy: registered Automatic-Module-Name: org.eclipse.net4j.util diff --git a/plugins/org.eclipse.net4j.util/pom.xml b/plugins/org.eclipse.net4j.util/pom.xml index dc0b1fd537..6d212faf2c 100644 --- a/plugins/org.eclipse.net4j.util/pom.xml +++ b/plugins/org.eclipse.net4j.util/pom.xml @@ -25,7 +25,7 @@ <groupId>org.eclipse.emf.cdo</groupId> <artifactId>org.eclipse.net4j.util</artifactId> - <version>3.8.0-SNAPSHOT</version> + <version>3.9.0-SNAPSHOT</version> <packaging>eclipse-plugin</packaging> </project> diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/CollectionUtil.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/CollectionUtil.java index 14e081949a..3787367671 100644 --- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/CollectionUtil.java +++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/collection/CollectionUtil.java @@ -11,8 +11,12 @@ package org.eclipse.net4j.util.collection; import java.util.ArrayList; +import java.util.Collection; import java.util.Iterator; +import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; +import java.util.Set; /** * Various static helper methods. @@ -26,6 +30,90 @@ public final class CollectionUtil { } + /** + * @since 3.9 + */ + public static <K, V> Set<V> getSet(Map<K, Set<V>> map, K key) + { + Set<V> set = map.get(key); + if (set == null) + { + set = new LinkedHashSet<V>(); + map.put(key, set); + } + + return set; + } + + /** + * @since 3.9 + */ + public static <K, V> boolean add(Map<K, Set<V>> map, K key, V value) + { + Set<V> set = getSet(map, key); + return set.add(value); + } + + /** + * @since 3.9 + */ + public static <K, V> boolean addAll(Map<K, Set<V>> map, K key, Collection<? extends V> values) + { + Set<V> set = getSet(map, key); + return set.addAll(values); + } + + /** + * @since 3.9 + */ + public static <K, V> boolean addAll(Map<K, Set<V>> map, Collection<? extends K> keys, V value) + { + boolean result = false; + for (K key : keys) + { + if (add(map, key, value)) + { + result = true; + } + } + + return result; + } + + /** + * @since 3.9 + */ + public static <K, V> boolean addAll(Map<K, Set<V>> map, Map<? extends K, ? extends Collection<? extends V>> map2) + { + boolean result = false; + for (Map.Entry<? extends K, ? extends Collection<? extends V>> entry : map2.entrySet()) + { + if (addAll(map, entry.getKey(), entry.getValue())) + { + result = true; + } + } + + return result; + } + + /** + * @since 3.9 + */ + public static <K, V> boolean putAll(Map<K, Set<V>> map, Map<? extends K, ? extends V> map2) + { + boolean result = false; + for (Map.Entry<? extends K, ? extends V> entry : map2.entrySet()) + { + if (add(map, entry.getKey(), entry.getValue())) + { + result = true; + } + } + + return result; + } + public static <T> Iterator<T> dump(Iterator<T> it) { List<T> list = new ArrayList<T>(); diff --git a/releng/org.eclipse.emf.cdo.releng.parent/plugins/pom.xml b/releng/org.eclipse.emf.cdo.releng.parent/plugins/pom.xml index fbc95eb70e..f7c177f766 100644 --- a/releng/org.eclipse.emf.cdo.releng.parent/plugins/pom.xml +++ b/releng/org.eclipse.emf.cdo.releng.parent/plugins/pom.xml @@ -43,6 +43,9 @@ Eike Stepper - initial API and implementation <module>../../../plugins/org.eclipse.emf.cdo.doc</module> <module>../../../plugins/org.eclipse.emf.cdo.ecore</module> <module>../../../plugins/org.eclipse.emf.cdo.edit</module> + <module>../../../plugins/org.eclipse.emf.cdo.evolution</module> + <module>../../../plugins/org.eclipse.emf.cdo.evolution.edit</module> + <module>../../../plugins/org.eclipse.emf.cdo.evolution.editor</module> <module>../../../plugins/org.eclipse.emf.cdo.examples</module> <module>../../../plugins/org.eclipse.emf.cdo.examples.client</module> <module>../../../plugins/org.eclipse.emf.cdo.examples.client.offline</module> |