From 573cd5a169a22b92d0503e76b192c9fc79ba25c2 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Sat, 2 Nov 2013 19:38:57 +0900 Subject: [PATCH 01/13] Add Simple Resource Synchronizer Plugin. --- org.dbflute.emecha.feature/.project | 17 + org.dbflute.emecha.feature/build.properties | 1 + org.dbflute.emecha.feature/feature.xml | 35 +++ org.dbflute.emecha.synchronizer/.classpath | 12 + org.dbflute.emecha.synchronizer/.gitignore | 1 + org.dbflute.emecha.synchronizer/.project | 28 ++ .../.settings/org.eclipse.jdt.core.prefs | 291 ++++++++++++++++++ .../.settings/org.eclipse.jdt.ui.prefs | 5 + .../META-INF/MANIFEST.MF | 12 + .../build.properties | 5 + org.dbflute.emecha.synchronizer/plugin.xml | 26 ++ .../preferences/EMechaPreferencePage.java | 67 ++++ .../emecha/synchronizer/EMSynchronizer.java | 124 ++++++++ .../synchronizer/handler/RefreshHandler.java | 133 ++++++++ .../emecha/synchronizer/nls/Messages.java | 34 ++ .../EMSynchronizerPreferencePage.java | 59 ++++ .../preferences/PreferenceConstants.java | 25 ++ .../preferences/PreferenceInitializer.java | 40 +++ .../synchronizer/nls/Messages.properties | 2 + .../synchronizer/nls/Messages_ja.properties | 2 + 20 files changed, 919 insertions(+) create mode 100644 org.dbflute.emecha.feature/.project create mode 100644 org.dbflute.emecha.feature/build.properties create mode 100644 org.dbflute.emecha.feature/feature.xml create mode 100644 org.dbflute.emecha.synchronizer/.classpath create mode 100644 org.dbflute.emecha.synchronizer/.gitignore create mode 100644 org.dbflute.emecha.synchronizer/.project create mode 100644 org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.core.prefs create mode 100644 org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.ui.prefs create mode 100644 org.dbflute.emecha.synchronizer/META-INF/MANIFEST.MF create mode 100644 org.dbflute.emecha.synchronizer/build.properties create mode 100644 org.dbflute.emecha.synchronizer/plugin.xml create mode 100644 org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/preferences/EMechaPreferencePage.java create mode 100644 org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java create mode 100644 org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/handler/RefreshHandler.java create mode 100644 org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/nls/Messages.java create mode 100644 org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java create mode 100644 org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceConstants.java create mode 100644 org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceInitializer.java create mode 100644 org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages.properties create mode 100644 org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages_ja.properties diff --git a/org.dbflute.emecha.feature/.project b/org.dbflute.emecha.feature/.project new file mode 100644 index 0000000..3e560bf --- /dev/null +++ b/org.dbflute.emecha.feature/.project @@ -0,0 +1,17 @@ + + + org.dbflute.emecha.feature + + + + + + org.eclipse.pde.FeatureBuilder + + + + + + org.eclipse.pde.FeatureNature + + diff --git a/org.dbflute.emecha.feature/build.properties b/org.dbflute.emecha.feature/build.properties new file mode 100644 index 0000000..64f93a9 --- /dev/null +++ b/org.dbflute.emecha.feature/build.properties @@ -0,0 +1 @@ +bin.includes = feature.xml diff --git a/org.dbflute.emecha.feature/feature.xml b/org.dbflute.emecha.feature/feature.xml new file mode 100644 index 0000000..d97503a --- /dev/null +++ b/org.dbflute.emecha.feature/feature.xml @@ -0,0 +1,35 @@ + + + + + Eclipse Plugin for DBFlute + + + + Copyright 2013 the Seasar Foundation and the Others. + + + + Copyright 2013 the Seasar Foundation and the Others. +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at +http://www.apache.org/licenses/LICENSE-2.0 +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, +either express or implied. See the License for the specific language +governing permissions and limitations under the License. + + + + + diff --git a/org.dbflute.emecha.synchronizer/.classpath b/org.dbflute.emecha.synchronizer/.classpath new file mode 100644 index 0000000..f127f74 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/.classpath @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/org.dbflute.emecha.synchronizer/.gitignore b/org.dbflute.emecha.synchronizer/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/org.dbflute.emecha.synchronizer/.gitignore @@ -0,0 +1 @@ +/target diff --git a/org.dbflute.emecha.synchronizer/.project b/org.dbflute.emecha.synchronizer/.project new file mode 100644 index 0000000..7c1295b --- /dev/null +++ b/org.dbflute.emecha.synchronizer/.project @@ -0,0 +1,28 @@ + + + org.dbflute.emecha.synchronizer + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.core.prefs b/org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..1a5c497 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,291 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.6 +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.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.6 +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=0 +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=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false +org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false +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=false +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +org.eclipse.jdt.core.formatter.comment.format_line_comments=false +org.eclipse.jdt.core.formatter.comment.format_source_code=false +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true +org.eclipse.jdt.core.formatter.comment.indent_root_tags=false +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not 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=4 +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=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=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not 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=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not 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=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=120 +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=4 +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 diff --git a/org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.ui.prefs b/org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.ui.prefs new file mode 100644 index 0000000..b94fe43 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/.settings/org.eclipse.jdt.ui.prefs @@ -0,0 +1,5 @@ +eclipse.preferences.version=1 +formatter_profile=_DBFlute +formatter_settings_version=12 +org.eclipse.jdt.ui.javadoc=false +org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/org.dbflute.emecha.synchronizer/META-INF/MANIFEST.MF b/org.dbflute.emecha.synchronizer/META-INF/MANIFEST.MF new file mode 100644 index 0000000..25e55db --- /dev/null +++ b/org.dbflute.emecha.synchronizer/META-INF/MANIFEST.MF @@ -0,0 +1,12 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: EMSynchronizer +Bundle-SymbolicName: org.dbflute.emecha.synchronizer;singleton:=true +Bundle-Version: 0.1.0 +Bundle-Activator: org.dbflute.emecha.synchronizer.EMSynchronizer +Bundle-Vendor: Seasar DBFlute +Require-Bundle: org.eclipse.ui, + org.eclipse.core.runtime, + org.eclipse.core.resources +Bundle-RequiredExecutionEnvironment: JavaSE-1.6 +Bundle-ActivationPolicy: lazy diff --git a/org.dbflute.emecha.synchronizer/build.properties b/org.dbflute.emecha.synchronizer/build.properties new file mode 100644 index 0000000..0530eb6 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/build.properties @@ -0,0 +1,5 @@ +source.. = src/main/java/ +output.. = target/classes/ +bin.includes = plugin.xml,\ + META-INF/,\ + . diff --git a/org.dbflute.emecha.synchronizer/plugin.xml b/org.dbflute.emecha.synchronizer/plugin.xml new file mode 100644 index 0000000..2fd4a4c --- /dev/null +++ b/org.dbflute.emecha.synchronizer/plugin.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/preferences/EMechaPreferencePage.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/preferences/EMechaPreferencePage.java new file mode 100644 index 0000000..aae3383 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/preferences/EMechaPreferencePage.java @@ -0,0 +1,67 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.dbflute.emecha.preferences; + +import org.eclipse.jface.preference.PreferencePage; +import org.eclipse.swt.SWT; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchPreferencePage; + +/** + * EMecha prefarences pages grouping. + * @author schatten + */ +public class EMechaPreferencePage extends PreferencePage implements IWorkbenchPreferencePage { + + /** + * + */ + public EMechaPreferencePage() { + super("EMecha"); + noDefaultAndApplyButton(); + } + + /** + * @param title + */ + public EMechaPreferencePage(String title) { + super(title); + noDefaultAndApplyButton(); + } + + /** + * {@inheritDoc} + * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) + */ + @Override + public void init(IWorkbench workbench) { + // nothing + } + + /** + * {@inheritDoc} + * @see org.eclipse.jface.preference.PreferencePage#createContents(org.eclipse.swt.widgets.Composite) + */ + @Override + protected Control createContents(Composite parent) { + setTitle("This is blank page. Please select submenu."); + Composite composite = new Composite(parent, SWT.NONE); + return composite; + } + +} diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java new file mode 100644 index 0000000..c75b484 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java @@ -0,0 +1,124 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.dbflute.emecha.synchronizer; + +import java.io.IOException; +import java.net.InetSocketAddress; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.TimeUnit; + +import org.dbflute.emecha.synchronizer.handler.RefreshHandler; +import org.dbflute.emecha.synchronizer.preferences.PreferenceConstants; +import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.ui.IStartup; +import org.eclipse.ui.plugin.AbstractUIPlugin; +import org.osgi.framework.BundleContext; + +import com.sun.net.httpserver.HttpServer; + +/** + * The activator class controls the plug-in life cycle + */ +public class EMSynchronizer extends AbstractUIPlugin implements IStartup { + + // The plug-in ID + public static final String PLUGIN_ID = "org.dbflute.emecha.synchronizer"; //$NON-NLS-1$ + + // The shared instance + private static EMSynchronizer plugin; + + private HttpServer server; + + private ExecutorService threadPool; + + /** + * The constructor + */ + public EMSynchronizer() { + } + + /** + * {@inheritDoc} + * @see org.eclipse.ui.IStartup#earlyStartup() + */ + @Override + public void earlyStartup() { + // Startup plugin with Server + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext) + */ + public void start(BundleContext context) throws Exception { + super.start(context); + plugin = this; + serverStart(); + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext) + */ + public void stop(BundleContext context) throws Exception { + plugin = null; + serverStop(); + super.stop(context); + } + + public void serverStart() throws IOException { + int port = plugin.getPreferenceStore().getInt(PreferenceConstants.P_LISTEN_PORT); + String hostname = "localhost"; + server = HttpServer.create(new InetSocketAddress(hostname, port), 0); + threadPool = Executors.newFixedThreadPool(1); + server.setExecutor(threadPool); + server.createContext("/", new RefreshHandler()); + server.createContext("/refresh", new RefreshHandler()); + server.start(); + } + + public void serverStop() throws InterruptedException { + if (server != null) { + server.stop(10); + } + if (threadPool != null && !threadPool.isShutdown()) { + threadPool.shutdownNow(); + } + threadPool.awaitTermination(60, TimeUnit.SECONDS); + } + + /** + * Returns the shared instance + * + * @return the shared instance + */ + public static EMSynchronizer getDefault() { + return plugin; + } + + /** + * Returns an image descriptor for the image file at the given plug-in relative path + * + * @param path the path + * @return the image descriptor + */ + public static ImageDescriptor getImageDescriptor(String path) { + return imageDescriptorFromPlugin(PLUGIN_ID, path); + } +} diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/handler/RefreshHandler.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/handler/RefreshHandler.java new file mode 100644 index 0000000..15bde19 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/handler/RefreshHandler.java @@ -0,0 +1,133 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.dbflute.emecha.synchronizer.handler; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; +import java.io.PrintWriter; +import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; + +import org.dbflute.emecha.synchronizer.nls.Messages; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.IWorkspaceRoot; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.resources.WorkspaceJob; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.SubProgressMonitor; + +import com.sun.net.httpserver.HttpExchange; +import com.sun.net.httpserver.HttpHandler; + +/** + * Refresh Handler + * @author schatten + */ +public class RefreshHandler implements HttpHandler { + protected static final Map STRING_TO_DEPTH = new HashMap(); + static { + STRING_TO_DEPTH.put("ZERO", IResource.DEPTH_ZERO); //$NON-NLS-1$ + STRING_TO_DEPTH.put("ONE", IResource.DEPTH_ONE); //$NON-NLS-1$ + STRING_TO_DEPTH.put("INFINITE", IResource.DEPTH_INFINITE); //$NON-NLS-1$ + } + + protected int toDepth(String depth) { + if (depth == null || depth.length() < 1) { + return IResource.DEPTH_ONE; + } + Integer i = STRING_TO_DEPTH.get(depth.toUpperCase()); + return i != null ? i : IResource.DEPTH_ONE; + } + + /** + * {@inheritDoc} + * + * @see com.sun.net.httpserver.HttpHandler#handle(com.sun.net.httpserver.HttpExchange) + */ + @Override + public void handle(HttpExchange exchange) throws IOException { + + ByteArrayOutputStream output = new ByteArrayOutputStream(); + + PrintWriter writer = new PrintWriter(new OutputStreamWriter(output, "UTF-8")); //$NON-NLS-1$ + try { + final List list = new LinkedList(); + IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); + String query = exchange.getRequestURI().getQuery(); + if (query != null) { + String[] params = query.split("&"); //$NON-NLS-1$ + for (String param : params) { + int index = param.indexOf("="); //$NON-NLS-1$ + String name; + String val = null; + if (index > -1) { + name = param.substring(0, index); + val = param.substring(index + 1); + } else { + name = param; + } + IResource r = root.findMember(name); + if (r != null && r.exists()) { + list.add(new RefreshTask(r, toDepth(val))); + writer.println(r.getFullPath()); + } + } + } + + if (list.isEmpty()) { + list.add(new RefreshTask(root, IResource.DEPTH_INFINITE)); + writer.println(Messages.MSG_ALL_RESOURCE); + } + new WorkspaceJob(Messages.MSG_REFRESH_RESOURCE) { + @Override + public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException { + monitor.beginTask(Messages.MSG_REFRESH_RESOURCE, list.size()); + for (RefreshTask rt : list) { + rt.run(new SubProgressMonitor(monitor, 1)); + } + monitor.done(); + return Status.OK_STATUS; + } + }.schedule(); + } finally { + writer.flush(); + exchange.sendResponseHeaders(200, output.size()); + OutputStream response = exchange.getResponseBody(); + response.write(output.toByteArray()); + } + } + + private class RefreshTask { + protected IResource r; + protected int depth; + + public RefreshTask(IResource r, int depth) { + this.r = r; + this.depth = depth; + } + + public void run(IProgressMonitor monitor) throws CoreException { + r.refreshLocal(depth, monitor); + } + } +} diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/nls/Messages.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/nls/Messages.java new file mode 100644 index 0000000..509e6df --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/nls/Messages.java @@ -0,0 +1,34 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ + +package org.dbflute.emecha.synchronizer.nls; + +import org.eclipse.osgi.util.NLS; + +/** + * Messages + * @author schatten + */ +public class Messages extends NLS { + static { + Class clazz = Messages.class; + NLS.initializeMessages(clazz.getName(), clazz); + } + + public static String MSG_REFRESH_RESOURCE; + public static String MSG_ALL_RESOURCE; + +} diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java new file mode 100644 index 0000000..6b0a278 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java @@ -0,0 +1,59 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.dbflute.emecha.synchronizer.preferences; + +import org.eclipse.jface.preference.*; +import org.eclipse.ui.IWorkbenchPreferencePage; +import org.eclipse.ui.IWorkbench; +import org.dbflute.emecha.synchronizer.EMSynchronizer; + +/** + * This class represents a preference page that is contributed to the Preferences dialog. By subclassing + * FieldEditorPreferencePage, we can use the field support built into JFace that allows us to create a page + * that is small and knows how to save, restore and apply itself.

This page is used to modify preferences only. They + * are stored in the preference store that belongs to the main plug-in class. That way, preferences can be accessed + * directly via the preference store. + */ + +public class EMSynchronizerPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { + + private IntegerFieldEditor portEditor; + + public EMSynchronizerPreferencePage() { + super(GRID); + setPreferenceStore(EMSynchronizer.getDefault().getPreferenceStore()); + setDescription("Resource Synchronizer Settings."); //$NON-NLS-1$ + } + + /** + * Creates the field editors. Field editors are abstractions of the common GUI blocks needed to manipulate various + * types of preferences. Each field editor knows how to save and restore itself. + */ + public void createFieldEditors() { + portEditor = new IntegerFieldEditor(PreferenceConstants.P_LISTEN_PORT, "&Port", getFieldEditorParent()); //$NON-NLS-1$ + addField(portEditor); + + } + + /* + * (non-Javadoc) + * + * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) + */ + public void init(IWorkbench workbench) { + } + +} \ No newline at end of file diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceConstants.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceConstants.java new file mode 100644 index 0000000..c0a6508 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceConstants.java @@ -0,0 +1,25 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.dbflute.emecha.synchronizer.preferences; + +/** + * Constant definitions for plug-in preferences + */ +public class PreferenceConstants { + + public static final String P_LISTEN_PORT = "listenPort"; + +} diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceInitializer.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceInitializer.java new file mode 100644 index 0000000..401f422 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/PreferenceInitializer.java @@ -0,0 +1,40 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.dbflute.emecha.synchronizer.preferences; + +import org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer; +import org.eclipse.jface.preference.IPreferenceStore; + +import org.dbflute.emecha.synchronizer.EMSynchronizer; + +/** + * Class used to initialize default preference values. + */ +public class PreferenceInitializer extends AbstractPreferenceInitializer { + + private static int DEFAULT_LISTEN_PORT = 8386; + + /* + * (non-Javadoc) + * + * @see org.eclipse.core.runtime.preferences.AbstractPreferenceInitializer#initializeDefaultPreferences() + */ + public void initializeDefaultPreferences() { + IPreferenceStore store = EMSynchronizer.getDefault().getPreferenceStore(); + store.setDefault(PreferenceConstants.P_LISTEN_PORT, DEFAULT_LISTEN_PORT); + } + +} diff --git a/org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages.properties b/org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages.properties new file mode 100644 index 0000000..5f9a80e --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages.properties @@ -0,0 +1,2 @@ +MSG_REFRESH_RESOURCE=Refresh resources ... +MSG_ALL_RESOURCE=All projects \ No newline at end of file diff --git a/org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages_ja.properties b/org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages_ja.properties new file mode 100644 index 0000000..a5ea638 --- /dev/null +++ b/org.dbflute.emecha.synchronizer/src/main/resources/org/dbflute/emecha/synchronizer/nls/Messages_ja.properties @@ -0,0 +1,2 @@ +MSG_REFRESH_RESOURCE=\u30ea\u30bd\u30fc\u30b9\u3092\u66f4\u65b0\u4e2d ... +MSG_ALL_RESOURCE=\u5168\u3066\u306e\u30d7\u30ed\u30b8\u30a7\u30af\u30c8 \ No newline at end of file From 6308cc9491301246d2390dd26f2f950df9aaef81 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Sat, 2 Nov 2013 19:45:27 +0900 Subject: [PATCH 02/13] =?UTF-8?q?=E9=81=B8=E6=8A=9E=E3=81=97=E3=81=9F?= =?UTF-8?q?=E3=82=AF=E3=83=A9=E3=82=B9=E3=81=AE=E5=AE=9F=E8=A3=85=E3=82=AF?= =?UTF-8?q?=E3=83=A9=E3=82=B9=E3=82=92=E4=BD=9C=E6=88=90=E3=81=99=E3=82=8B?= =?UTF-8?q?=E3=82=A6=E3=82=A3=E3=82=B6=E3=83=BC=E3=83=89=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0=E3=81=97=E3=81=9F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../.settings/org.eclipse.jdt.core.prefs | 42 +++-- .../.settings/org.eclipse.jdt.ui.prefs | 3 +- .../META-INF/MANIFEST.MF | 2 +- .../OSGI-INF/l10n/bundle.properties | 4 + .../OSGI-INF/l10n/bundle_ja.properties | 4 + .../build.properties | 4 +- .../icons/newclass_wiz.gif | Bin 0 -> 598 bytes .../plugin.xml | 67 ++++++++ .../plugin/dfassist/DfAssistPlugin.java | 12 ++ .../command/NewConcreteWizardCommand.java | 132 ++++++++++++++++ .../dfassist/jdt/QuickFixProcessor.java | 12 ++ .../jdt/derived/DerivedFieldInfo.java | 14 +- .../derived/DerivedFieldPropertyProposal.java | 12 ++ .../dfassist/jdt/derived/DerivedType.java | 14 +- .../wizard/NewConcreteClassWizard.java | 126 +++++++++++++++ .../wizard/NewConcreteClassWizardPage.java | 148 ++++++++++++++++++ 16 files changed, 581 insertions(+), 15 deletions(-) create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/icons/newclass_wiz.gif create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/command/NewConcreteWizardCommand.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizard.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.core.prefs b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.core.prefs index 2a3eabb..30c4991 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.core.prefs +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.core.prefs @@ -1,4 +1,3 @@ -#Fri May 11 01:59:39 JST 2012 eclipse.preferences.version=1 org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 org.eclipse.jdt.core.compiler.compliance=1.5 @@ -7,6 +6,7 @@ org.eclipse.jdt.core.compiler.problem.enumIdentifier=error org.eclipse.jdt.core.compiler.source=1.5 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 @@ -17,15 +17,18 @@ 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=0 @@ -50,21 +53,27 @@ org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false -org.eclipse.jdt.core.formatter.comment.format_block_comments=false +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_html=false +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true org.eclipse.jdt.core.formatter.comment.format_line_comments=false -org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.format_source_code=false 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.indent_root_tags=false +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not 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 @@ -76,9 +85,14 @@ 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=4 +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_member=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_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=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=do not insert org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert @@ -145,12 +159,14 @@ org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invoca 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 @@ -174,6 +190,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invoc 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 @@ -229,6 +246,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invoc 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 @@ -238,6 +256,7 @@ org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=inser 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 @@ -247,6 +266,8 @@ org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_ 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 @@ -259,5 +280,8 @@ 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=4 +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 diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.ui.prefs b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.ui.prefs index 38b6bd3..3e4c782 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.ui.prefs +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.settings/org.eclipse.jdt.ui.prefs @@ -1,5 +1,4 @@ -#Fri May 11 01:59:39 JST 2012 eclipse.preferences.version=1 formatter_profile=_DBFlute -formatter_settings_version=11 +formatter_settings_version=12 org.eclipse.jdt.ui.text.custom_code_templates= diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/META-INF/MANIFEST.MF b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/META-INF/MANIFEST.MF index b1aa4a0..785652d 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/META-INF/MANIFEST.MF +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: DBFlute Assist Plugin Bundle-SymbolicName: org.seasar.dbflute.emecha.eclipse.plugin.dfassist;singleton:=true -Bundle-Version: 0.0.2.0 +Bundle-Version: 0.0.3.0 Bundle-Activator: org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties new file mode 100644 index 0000000..ded143e --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties @@ -0,0 +1,4 @@ +#Properties file for org.tide.eclipse +newConcreteCommand.name = Create New Concrete Class +newConcreteCommand.label = Create New Concrete Class +newConcreteWizard.name = Concrete Class diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties new file mode 100644 index 0000000..a727f8b --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties @@ -0,0 +1,4 @@ +#Properties file for org.tide.eclipse +newConcreteCommand.name = \u65b0\u898f\u5b9f\u88c5\u30af\u30e9\u30b9\u306e\u4f5c\u6210 +newConcreteCommand.label = \u65b0\u898f\u5b9f\u88c5\u30af\u30e9\u30b9\u306e\u4f5c\u6210 +newConcreteWizard.name = \u5b9f\u88c5\u30af\u30e9\u30b9 diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/build.properties b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/build.properties index a1c430f..8b5d2d2 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/build.properties +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/build.properties @@ -2,7 +2,9 @@ source.. = src/main/java/ output.. = target/classes/ bin.includes = META-INF/,\ .,\ - plugin.xml + plugin.xml,\ + OSGI-INF/,\ + icons/ additional.bundles = org.eclipse.jface.text.source,\ org.eclipse.jdt.ui.source,\ org.eclipse.jdt.junit4.runtime,\ diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/icons/newclass_wiz.gif b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/icons/newclass_wiz.gif new file mode 100644 index 0000000000000000000000000000000000000000..a1c6545cd644ed7ecea4a95cf17dbd3934180840 GIT binary patch literal 598 zcmZ?wbhEHb6krfwc*ekxv!ZdqiFL+JzGlt-4xJHB-BE7+aUnCZqGlJw%qh%RR@1b3 zl1iDKUX7b&TR_B|+}L@A$&1PxH%(Y{a-D9Ci(aj(eyy89ottr^r}v};uL*JG>)LnR zIB3-1Zr$#0-x-v>qPlPIEW3^XyY>LLzHs;ch@fdn*~_c?_su$d_vEAZPlKio{2vS$s00*$vM@3*q%-J%%mc*<1N-KN z^rq&P*0%Q8_HY47J}H5)*oe*+ZaxQ3PcO&ln24B|W^P%Z(BKf?a6WJU zv~AmxlHw8*nmC*Sw*~pxqy@yM#5c2l~9o3IxQ!i zrX{beEUeG3%GNBXWMYwKpstu^ucyt>yw0Fw + + + + Create a new Concrete Class + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/DfAssistPlugin.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/DfAssistPlugin.java index effa008..1b44ca1 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/DfAssistPlugin.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/DfAssistPlugin.java @@ -1,5 +1,17 @@ /* + * Copyright 2013 the Seasar Foundation and the Others. * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. */ package org.seasar.dbflute.emecha.eclipse.plugin.dfassist; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/command/NewConcreteWizardCommand.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/command/NewConcreteWizardCommand.java new file mode 100644 index 0000000..5563b4a --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/command/NewConcreteWizardCommand.java @@ -0,0 +1,132 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.command; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.commands.IHandler; +import org.eclipse.core.resources.IFile; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.internal.core.CompilationUnit; +import org.eclipse.jdt.internal.core.SourceType; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.StructuredSelection; +import org.eclipse.jface.wizard.WizardDialog; +import org.eclipse.swt.widgets.Display; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.part.FileEditorInput; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.wizard.NewConcreteClassWizard; + +/** + * Command handler to create a new concrete class. + * @author schatten + */ +@SuppressWarnings("restriction") +public class NewConcreteWizardCommand extends AbstractHandler implements IHandler { + + public Object execute(ExecutionEvent event) throws ExecutionException { + ISelection objParam = HandlerUtil.getActiveMenuEditorInput(event); + boolean execute = executeSelection(objParam); + if (execute) return null; + + ISelection menuParam = HandlerUtil.getActiveMenuSelection(event); + execute = executeSelection(menuParam); + + return null; + } + + protected boolean executeSelection(ISelection selection) { + if (selection instanceof StructuredSelection) { + Object firstElement = ((StructuredSelection)selection).getFirstElement(); + if (firstElement instanceof IFile ){ + NewConcreteClassWizard wizard = new NewConcreteClassWizard(); + wizard.init(PlatformUI.getWorkbench(), (StructuredSelection)selection); + this.getWorkbench(wizard); + return true; + } + if (firstElement instanceof FileEditorInput) { + final IFile file = ((FileEditorInput)firstElement).getFile(); + NewConcreteClassWizard wizard = new NewConcreteClassWizard(); + wizard.init(PlatformUI.getWorkbench(), new StructuredSelection(file)); + this.getWorkbench(wizard); + return true; + } + if (firstElement instanceof CompilationUnit) { + IJavaElement javaElement = ((CompilationUnit) firstElement).getPrimaryElement(); + if (javaElement.getElementType() == IJavaElement.COMPILATION_UNIT) { + final IFile file = javaElement.getJavaProject().getProject().getWorkspace().getRoot().getFile(javaElement.getPath()); + NewConcreteClassWizard wizard = new NewConcreteClassWizard(); + wizard.init(PlatformUI.getWorkbench(),new StructuredSelection(file)); + this.getWorkbench(wizard); + return true; + } + } + if (firstElement instanceof SourceType) { + IJavaElement primaryElement = ((SourceType)firstElement).getPrimaryElement(); + if (primaryElement.getElementType() == IJavaElement.TYPE) { + final IFile file = primaryElement.getJavaProject().getProject().getWorkspace().getRoot().getFile(primaryElement.getPath()); + NewConcreteClassWizard wizard = new NewConcreteClassWizard(); + wizard.init(PlatformUI.getWorkbench(),new StructuredSelection(file)); + this.getWorkbench(wizard); + return true; + } + } + } + return false; + } + + + /** + * getWorkbench + * + * @param wizard + */ + private int getWorkbench(NewConcreteClassWizard wizard) { + WizardDialog dialog = new WizardDialog(getShell(), wizard); + return dialog.open(); + } + + /** + * getShell + * + * @return + */ + private Shell getShell() { + IWorkbenchWindow window = getWorkbenchWindow(); + Shell shell = window != null ? window.getShell() : new Shell(Display.getDefault()); + return shell; + } + + /** + * getWorkbenchWindow + * + * @return + */ + private IWorkbenchWindow getWorkbenchWindow() { + IWorkbench workbench = PlatformUI.getWorkbench(); + IWorkbenchWindow result = workbench.getActiveWorkbenchWindow(); + if (result == null && 0 < workbench.getWorkbenchWindowCount()) { + IWorkbenchWindow[] ws = workbench.getWorkbenchWindows(); + result = ws[0]; + } + return result; + } +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java index 4af0be9..005013d 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java @@ -1,5 +1,17 @@ /* + * Copyright 2013 the Seasar Foundation and the Others. * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. */ package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.jdt; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldInfo.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldInfo.java index 0e373a8..a69c2bd 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldInfo.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldInfo.java @@ -1,5 +1,17 @@ -/** +/* + * Copyright 2013 the Seasar Foundation and the Others. * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. */ package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.jdt.derived; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java index d15d593..ae1728a 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java @@ -1,5 +1,17 @@ /* + * Copyright 2013 the Seasar Foundation and the Others. * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. */ package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.jdt.derived; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedType.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedType.java index 4da58b4..047f704 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedType.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedType.java @@ -1,5 +1,17 @@ -/** +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. */ package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.jdt.derived; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizard.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizard.java new file mode 100644 index 0000000..21bcb21 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizard.java @@ -0,0 +1,126 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.wizard; + +import java.lang.reflect.InvocationTargetException; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.ui.JavaUI; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.wizard.Wizard; +import org.eclipse.ui.INewWizard; +import org.eclipse.ui.IWorkbench; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; + +/** + * Wizard to create a new concrete class. + * @author schatten + */ +public class NewConcreteClassWizard extends Wizard implements INewWizard { + + private IFile resource; + private NewConcreteClassWizardPage wizardPage; + /** + * + */ + public NewConcreteClassWizard() { + super(); + setNeedsProgressMonitor(true); + } + + /** + * @see org.eclipse.jface.wizard.Wizard#performFinish() + */ + @Override + public boolean performFinish() { + IRunnableWithProgress runnable = new IRunnableWithProgress(){ + + public void run(IProgressMonitor monitor) + throws InvocationTargetException, InterruptedException { + try{ + wizardPage.createType(monitor); + }catch (CoreException e) { + DfAssistPlugin.log(e); + }finally{ + monitor.done(); + } + } + }; + if ( finishPage(runnable) ) { + try { + JavaUI.openInEditor(this.wizardPage.getCreatedType()); + } catch (Exception e) { + DfAssistPlugin.log(e); + return false; + } + } + return true; + } + + /** + * finishPage + * @param runnable + */ + private boolean finishPage(IRunnableWithProgress runnable) { + try{ + IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(runnable); + PlatformUI.getWorkbench().getProgressService().runInUI( + getContainer(), op, + ResourcesPlugin.getWorkspace().getRoot()); + } catch ( InterruptedException e ){ + DfAssistPlugin.log(e); + return false; + } catch (InvocationTargetException e) { + DfAssistPlugin.log(e); + return false; + } + return true; + } + + /** + * @see org.eclipse.ui.IWorkbenchWizard#init(org.eclipse.ui.IWorkbench, org.eclipse.jface.viewers.IStructuredSelection) + */ + public void init(IWorkbench workbench, IStructuredSelection selection) { + Object o = selection.getFirstElement(); + if (o instanceof IFile) { + IFile f = (IFile) o; + init(f); + } + this.wizardPage = new NewConcreteClassWizardPage(); + addPage(this.wizardPage); + this.wizardPage.init(selection); + this.wizardPage.setResource(resource); + } + + protected void init(IFile file) { + IProject p = file.getProject(); + IJavaProject javap = JavaCore.create(p); + if (javap.exists() && javap.isOpen()) { + this.resource = file; + } + + } + +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java new file mode 100644 index 0000000..faf281f --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java @@ -0,0 +1,148 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.wizard; + +import java.io.BufferedReader; +import java.io.Closeable; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.dom.ASTParser; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.TypeDeclaration; +import org.eclipse.jdt.ui.wizards.NewClassWizardPage; +import org.eclipse.swt.widgets.Composite; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; + +/** + * Wizard page to create a new concrete class. + * @author schatten + */ +public class NewConcreteClassWizardPage extends NewClassWizardPage { + + private IFile resource; + + /** + * {@inheritDoc} + * @see org.eclipse.jdt.ui.wizards.NewClassWizardPage#createControl(org.eclipse.swt.widgets.Composite) + */ + @Override + public void createControl(Composite parent) { + super.createControl(parent); + String pkgName = getPackageFragment().getElementName(); + String implPackageName = pkgName; + if (implPackageName == null || implPackageName.isEmpty()) { + implPackageName = "impl"; + } else if (!implPackageName.endsWith(".impl")) { + implPackageName = pkgName + ".impl"; + } + setPackageFragment( getPackageFragmentRoot().getPackageFragment( implPackageName) ,true); + if (this.resource != null) { + String typeName = this.resource.getFullPath().removeFileExtension().lastSegment(); + + if ( typeName.lastIndexOf("Abstract") > -1 ) { + setTypeName(typeName.replace("Abstract", "") + "Impl", true); + } else { + setTypeName(typeName + "Impl", true); + } + + String superClassName = pkgName + "." + typeName; + try { + if ( this.isInterface(this.resource) ) { + List list = new ArrayList(); + list.add(superClassName); + setSuperInterfaces(list, true); + } else { + setSuperClass(superClassName, true); + } + } catch (Exception e) { + DfAssistPlugin.log(e); + } + } + setAddComments(true, true); + enableCommentControl(true); + setMethodStubSelection(false, false, true, true); + + } + + /** + * @param resource セットする resource + */ + public void setResource(IFile resource) { + this.resource = resource; + } + + /** + * 対象がInterfaceクラスか判定する。 + * @param file 対象のファイル + * @return 対象がInterfaceクラスの場合にtrue + * @throws CoreException + * @throws IOException + */ + protected boolean isInterface(IFile file) throws CoreException, IOException { + ASTParser parser = ASTParser.newParser(AST.JLS4); + parser.setKind(ASTParser.K_COMPILATION_UNIT); + parser.setSource(this.getSourceString(file).toCharArray()); + CompilationUnit unit = (CompilationUnit) parser.createAST(null); + TypeDeclaration type = (TypeDeclaration)unit.types().get(0); + return type.isInterface(); + + } + + /** + * 対象のファイルの内容を取得する。 + * @param file 対象のファイル + * @return ソース文字列 + * @throws CoreException + * @throws IOException + */ + protected String getSourceString(IFile file) throws CoreException ,IOException { + StringBuilder builder = new StringBuilder(); + InputStream stream = null; + BufferedReader reader = null; + try { + stream = file.getContents(); + reader = new BufferedReader(new InputStreamReader(stream)); + for (String str = reader.readLine(); str != null; str = reader.readLine() ){ + builder.append(str); + builder.append('\n'); + } + return builder.toString(); + } finally { + closeStream(stream); + closeStream(reader); + } + } + /** + * ストリームを閉じる。 + * @param closeable target stream + */ + protected void closeStream(Closeable closeable) { + try { + if ( closeable != null ) + closeable.close(); + }catch (IOException e) { + DfAssistPlugin.log(e); + } + } + +} From 68feba80c9d983448dfb13f3b716a832e7d3c8a2 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Sat, 2 Nov 2013 19:48:57 +0900 Subject: [PATCH 03/13] Change version to 0.5.6 --- .../feature.xml | 16 +++++++++++----- .../META-INF/MANIFEST.MF | 2 +- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/org.seasar.dbflute.emecha.eclipse.feature/feature.xml b/org.seasar.dbflute.emecha.eclipse.feature/feature.xml index 134172e..ecffdf1 100644 --- a/org.seasar.dbflute.emecha.eclipse.feature/feature.xml +++ b/org.seasar.dbflute.emecha.eclipse.feature/feature.xml @@ -2,22 +2,28 @@ + version="0.5.6"> - + Eclipse Plugin for DBFlute - + [Enter Copyright Description here.] - + EMecha is free software distributed under the same license as DBFlute. -http://dbflute.sandbox.seasar.org/ja/environment/license.html +http://dbflute.seasar.org/ja/environment/license.html + + Date: Sun, 17 Nov 2013 14:12:14 +0900 Subject: [PATCH 04/13] Add Hyper Link --- .../.classpath | 15 +- .../plugin.xml | 11 + .../JavaElementHyperlinkDetector.java | 230 ++++++++++++++++++ .../internal/ui/javaeditor/package-info.java | 5 + .../dfassist/jdt/QuickFixProcessor.java | 2 +- .../derived/DerivedFieldPropertyProposal.java | 23 +- .../link/CustomizeEntityHyperlink.java | 104 ++++++++ .../link/OutsideSqlHyperlinkDetector.java | 63 +++++ .../dfassist/link/ParameterBeanHyperlink.java | 102 ++++++++ .../dfassist/link/SqlFileHyperlink.java | 210 ++++++++++++++++ .../eclipse/plugin/dfassist/nls/Messages.java | 18 ++ .../plugin/dfassist/nls/messages.properties | 4 + .../dfassist/nls/messages_ja.properties | 4 + 13 files changed, 772 insertions(+), 19 deletions(-) create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/Messages.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages.properties create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages_ja.properties diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.classpath b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.classpath index 6e2065e..d3d5c80 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.classpath +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/.classpath @@ -1,7 +1,8 @@ - - - - - - - + + + + + + + + diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml index c12b4a7..db53abb 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml @@ -76,4 +76,15 @@ + + + + + diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java new file mode 100644 index 0000000..9aabdb0 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java @@ -0,0 +1,230 @@ +/******************************************************************************* + * Copyright (c) 2000, 2012 IBM Corporation 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: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package frend.org.eclipse.jdt.internal.ui.javaeditor; + +import java.util.ArrayList; +import java.util.List; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.text.BadLocationException; +import org.eclipse.jface.text.IDocument; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.ITextViewer; +import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.texteditor.IDocumentProvider; +import org.eclipse.ui.texteditor.ITextEditor; +import org.eclipse.jdt.core.ICodeAssist; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.ITypeRoot; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.core.dom.ASTNode; +import org.eclipse.jdt.core.dom.BreakStatement; +import org.eclipse.jdt.core.dom.CompilationUnit; +import org.eclipse.jdt.core.dom.ContinueStatement; +import org.eclipse.jdt.core.dom.NodeFinder; +import org.eclipse.jdt.core.dom.SimpleName; +import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor; +import org.eclipse.jdt.internal.corext.util.CollectionsUtil; +import org.eclipse.jdt.ui.SharedASTProvider; +import org.eclipse.jdt.ui.actions.SelectionDispatchAction; +import org.eclipse.jdt.internal.ui.search.BreakContinueTargetFinder; +import org.eclipse.jdt.internal.ui.search.IOccurrencesFinder.OccurrenceLocation; +import org.eclipse.jdt.internal.ui.text.JavaWordFinder; +/* same package access */ +import org.eclipse.jdt.internal.ui.javaeditor.*; + +/** + * Java element hyperlink detector. + * + * @since 3.1 + */ +@SuppressWarnings("restriction") +public class JavaElementHyperlinkDetector extends AbstractHyperlinkDetector { + + /* cache for the last result from codeSelect(..) */ + private static ITypeRoot fLastInput; + private static long fLastModStamp; + private static IRegion fLastWordRegion; + private static IJavaElement[] fLastElements; + + /* + * @see org.eclipse.jface.text.hyperlink.IHyperlinkDetector#detectHyperlinks(org.eclipse.jface.text.ITextViewer, org.eclipse.jface.text.IRegion, boolean) + */ + public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boolean canShowMultipleHyperlinks) { + ITextEditor textEditor= (ITextEditor)getAdapter(ITextEditor.class); + if (region == null || !(textEditor instanceof JavaEditor)) + return null; + + IAction openAction= textEditor.getAction("OpenEditor"); //$NON-NLS-1$ + if (!(openAction instanceof SelectionDispatchAction)) + return null; + + int offset= region.getOffset(); + + ITypeRoot input= EditorUtility.getEditorInputJavaElement(textEditor, false); + if (input == null) + return null; + + try { + IDocumentProvider documentProvider= textEditor.getDocumentProvider(); + IEditorInput editorInput= textEditor.getEditorInput(); + IDocument document= documentProvider.getDocument(editorInput); + IRegion wordRegion= JavaWordFinder.findWord(document, offset); + if (wordRegion == null || wordRegion.getLength() == 0) + return null; + + if (isInheritDoc(document, wordRegion) && getClass() != JavaElementHyperlinkDetector.class) + return null; + + if (JavaElementHyperlinkDetector.class == getClass() && findBreakOrContinueTarget(input, region) != null) + return new IHyperlink[] { new JavaElementHyperlink(wordRegion, (SelectionDispatchAction)openAction, null, false) }; + + IJavaElement[] elements; + long modStamp= documentProvider.getModificationStamp(editorInput); + if (input.equals(fLastInput) && modStamp == fLastModStamp && wordRegion.equals(fLastWordRegion)) { + elements= fLastElements; + } else { + elements= ((ICodeAssist) input).codeSelect(wordRegion.getOffset(), wordRegion.getLength()); + elements= selectOpenableElements(elements); + fLastInput= input; + fLastModStamp= modStamp; + fLastWordRegion= wordRegion; + fLastElements= elements; + } + if (elements.length == 0) + return null; + + ArrayList links= new ArrayList(elements.length); + for (int i= 0; i < elements.length; i++) { + addHyperlinks(links, wordRegion, (SelectionDispatchAction)openAction, elements[i], elements.length > 1, (JavaEditor)textEditor); + } + if (links.size() == 0) + return null; + + return CollectionsUtil.toArray(links, IHyperlink.class); + + } catch (JavaModelException e) { + return null; + } + } + + @Override + public void dispose() { + super.dispose(); + fLastElements= null; + fLastInput= null; + fLastWordRegion= null; + } + + /** + * Returns whether the word is "inheritDoc". + * + * @param document the document + * @param wordRegion the word region + * @return true iff the word is "inheritDoc" + * @since 3.7 + */ + private static boolean isInheritDoc(IDocument document, IRegion wordRegion) { + try { + String word= document.get(wordRegion.getOffset(), wordRegion.getLength()); + return "inheritDoc".equals(word); //$NON-NLS-1$ + } catch (BadLocationException e) { + return false; + } + } + + /** + * Creates and adds Java element hyperlinks. + * + * @param hyperlinksCollector the list to which hyperlinks should be added + * @param wordRegion the region of the link + * @param openAction the action to use to open the Java elements + * @param element the Java element to open + * @param qualify true if the hyperlink text should show a qualified name for + * element + * @param editor the active Java editor + * + * @since 3.5 + */ + protected void addHyperlinks(List hyperlinksCollector, IRegion wordRegion, SelectionDispatchAction openAction, IJavaElement element, boolean qualify, JavaEditor editor) { + hyperlinksCollector.add(new JavaElementHyperlink(wordRegion, openAction, element, qualify)); + } + + + /** + * Selects the openable elements out of the given ones. + * + * @param elements the elements to filter + * @return the openable elements + * @since 3.4 + */ + private IJavaElement[] selectOpenableElements(IJavaElement[] elements) { + List result= new ArrayList(elements.length); + for (int i= 0; i < elements.length; i++) { + IJavaElement element= elements[i]; + switch (element.getElementType()) { + case IJavaElement.PACKAGE_DECLARATION: + case IJavaElement.PACKAGE_FRAGMENT: + case IJavaElement.PACKAGE_FRAGMENT_ROOT: + case IJavaElement.JAVA_PROJECT: + case IJavaElement.JAVA_MODEL: + break; + default: + result.add(element); + break; + } + } + return result.toArray(new IJavaElement[result.size()]); + } + + /** + * Finds the target for break or continue node. + * + * @param input the editor input + * @param region the region + * @return the break or continue target location or null if none + * @since 3.7 + */ + public static OccurrenceLocation findBreakOrContinueTarget(ITypeRoot input, IRegion region) { + CompilationUnit astRoot= SharedASTProvider.getAST(input, SharedASTProvider.WAIT_NO, null); + if (astRoot == null) + return null; + + ASTNode node= NodeFinder.perform(astRoot, region.getOffset(), region.getLength()); + ASTNode breakOrContinueNode= null; + boolean labelSelected= false; + if (node instanceof SimpleName) { + SimpleName simpleName= (SimpleName) node; + StructuralPropertyDescriptor location= simpleName.getLocationInParent(); + if (location == ContinueStatement.LABEL_PROPERTY || location == BreakStatement.LABEL_PROPERTY) { + breakOrContinueNode= simpleName.getParent(); + labelSelected= true; + } + } else if (node instanceof ContinueStatement || node instanceof BreakStatement) + breakOrContinueNode= node; + + if (breakOrContinueNode == null) + return null; + + BreakContinueTargetFinder finder= new BreakContinueTargetFinder(); + if (finder.initialize(astRoot, breakOrContinueNode) == null) { + OccurrenceLocation[] locations= finder.getOccurrences(); + if (locations != null) { + if (breakOrContinueNode instanceof BreakStatement && !labelSelected) + return locations[locations.length - 1]; // points to the end of target statement + return locations[0]; // points to the beginning of target statement + } + } + return null; + } +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java new file mode 100644 index 0000000..8e50e67 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java @@ -0,0 +1,5 @@ +/** + * JDT-3.7 以降の実装を3.7以前で利用するためにコピーしたパッケージ。 + * @author schatten + */ +package frend.org.eclipse.jdt.internal.ui.javaeditor; \ No newline at end of file diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java index 005013d..82263df 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java @@ -124,7 +124,7 @@ protected Collection getDerivedFieldProposal(IInvocatio case ASTNode.QUALIFIED_NAME: DerivedFieldInfo fieldInfo = createDerivedFieldInfo(context, problem, (Name)selectedNode); ASTNode parent = selectedNode.getParent(); - DfAssistPlugin.log("Problem:" + problem.getProblemId() + ", selectNode:" + selectedNode.getClass() + ", Parent-NodeType:" + parent.getNodeType() + ", Parent-Class:" + parent.getClass()); +// DfAssistPlugin.log("Problem:" + problem.getProblemId() + ", selectNode:" + selectedNode.getClass() + ", Parent-NodeType:" + parent.getNodeType() + ", Parent-Class:" + parent.getClass()); if (parent instanceof MethodInvocation) { MethodInvocation parentMethod = (MethodInvocation)parent; String methodName = parentMethod.getName().getFullyQualifiedName(); diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java index ae1728a..c04fdc3 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/derived/DerivedFieldPropertyProposal.java @@ -39,6 +39,7 @@ import org.eclipse.ui.PartInitException; import org.eclipse.ui.texteditor.AbstractTextEditor; import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.Messages; /** * DerivedReferrer用の定数・変数・Getter/Setterの作成をアシストするプロポーサル。 @@ -46,7 +47,7 @@ */ public class DerivedFieldPropertyProposal implements IJavaCompletionProposal { - private static final String LINE_SEPARATER = System.getProperty("line.separator", "\n"); + private static final String LINE_SEPARATER = System.getProperty("line.separator", "\n"); //$NON-NLS-1$ //$NON-NLS-2$ private IInvocationContext _context; private int _addRelevance = 0; @@ -90,7 +91,7 @@ public void apply(IDocument document) { IEditorPart editor = JavaUI.openInEditor(findType,true,false); // 対象クラスにメソッドを追加 String importTypeName = this._fieldInfo.getPropertyTypeFullPackageName(); - if (!importTypeName.startsWith("java.lang")) { + if (!importTypeName.startsWith("java.lang")) { //$NON-NLS-1$ findType.getCompilationUnit().createImport(importTypeName, null, Flags.AccDefault, null); } findType.createField(_fieldInfo.getConstantFieldSource(), null, true, null); @@ -105,9 +106,9 @@ public void apply(IDocument document) { ateditor.selectAndReveal(propertyFieldSourceRange.getOffset() + 10, 0); } } catch (JavaModelException e) { - DfAssistPlugin.log("Editor open error.", e); + DfAssistPlugin.log("Editor open error.", e); //$NON-NLS-1$ } catch (PartInitException e) { - DfAssistPlugin.log("Editor open error.", e); + DfAssistPlugin.log("Editor open error.", e); //$NON-NLS-1$ } } @@ -129,7 +130,7 @@ protected String getTargetTypeName(CompilationUnit astRoot, String selectTypeNam } else { Name name = imp.getName(); String packageName = name.getFullyQualifiedName(); - String[] split = packageName.split("\\."); + String[] split = packageName.split("\\."); //$NON-NLS-1$ String splitName = split.length > 1 ? split[split.length -1] : split[0]; if (splitName.equals(typeName)) { typeName = packageName; @@ -146,10 +147,10 @@ protected String getTargetTypeName(CompilationUnit astRoot, String selectTypeNam public String getAdditionalProposalInfo() { // 候補表示時に出力する説明文を組み立てる。 StringBuilder code = new StringBuilder(); - code.append("public class "); + code.append("public class "); //$NON-NLS-1$ code.append(_fieldInfo.getTargetTypeName()); - code.append(" ... {").append(LINE_SEPARATER); - code.append("...").append(LINE_SEPARATER).append(""); + code.append(" ... {").append(LINE_SEPARATER); //$NON-NLS-1$ + code.append("...").append(LINE_SEPARATER).append(""); //$NON-NLS-1$ //$NON-NLS-2$ code.append(_fieldInfo.getConstantFieldSource()); code.append(LINE_SEPARATER); code.append(_fieldInfo.getPropertyFieldSource()); @@ -157,8 +158,8 @@ public String getAdditionalProposalInfo() { code.append(_fieldInfo.getGetterMethodSource()); code.append(LINE_SEPARATER); code.append(_fieldInfo.getSetterMethodSource()); - code.append("").append(LINE_SEPARATER).append("}"); - return code.toString().replaceAll(LINE_SEPARATER, "
" + LINE_SEPARATER); + code.append("
").append(LINE_SEPARATER).append("}"); //$NON-NLS-1$ //$NON-NLS-2$ + return code.toString().replaceAll(LINE_SEPARATER, "
" + LINE_SEPARATER); //$NON-NLS-1$ } public IContextInformation getContextInformation() { @@ -170,7 +171,7 @@ public IContextInformation getContextInformation() { * @see org.eclipse.jface.text.contentassist.ICompletionProposal#getDisplayString() */ public String getDisplayString() { - return "Create Derived Properties." + " : " + this._fieldInfo.getPropertyTypeName(); + return Messages.QUICK_FIX_DERIVED_FIELD_PROPERTY + " : " + this._fieldInfo.getPropertyTypeName(); //$NON-NLS-2$ } /** diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java new file mode 100644 index 0000000..3b8d6d1 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java @@ -0,0 +1,104 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.link; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.ui.actions.SelectionDispatchAction; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.jface.viewers.StructuredSelection; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.Messages; + +/** + * @author schatten + * + */ +public class CustomizeEntityHyperlink implements IHyperlink { + private final IRegion fRegion; + private final SelectionDispatchAction fOpenAction; + private final IType fElement; + @SuppressWarnings("unused") + private final boolean fQualify; + private IType entityType = null; + + public CustomizeEntityHyperlink(IRegion region, + SelectionDispatchAction openAction, IType element, + boolean qualify) { + Assert.isNotNull(openAction); + Assert.isNotNull(region); + + fRegion= region; + fOpenAction= openAction; + fElement= element; + fQualify= qualify; + try { + entityType = getEntityClassType(); + } catch (JavaModelException e) { + // TODO 自動生成された catch ブロック + DfAssistPlugin.log(e); + } + } + + public IRegion getHyperlinkRegion() { + return fRegion; + } + + public String getTypeLabel() { + return null; + } + + public String getHyperlinkText() { + return Messages.HYPERLINK_CUSTOMIZE_ENTITY; + } + + + public void open() { + if (existEntityType()) { + fOpenAction.run(new StructuredSelection(entityType)); + } + } + + /** + * CustomizeEntityが存在するか判定する。 + * @return 対になるCustomizeEntityが存在する場合にtrue + */ + public boolean existEntityType() { + return entityType != null && entityType.exists(); + } + + private IType getEntityClassType() throws JavaModelException { + String packageName = fElement.getPackageFragment().getElementName(); + String typeQualifiedName = fElement.getTypeQualifiedName(); + if (packageName.endsWith(".exbhv.pmbean")){ + packageName = packageName.substring(0, packageName.indexOf(".exbhv.pmbean")) + ".exentity.customize"; + } + if (packageName.endsWith(".bsbhv.pmbean")){ + packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exentity.customize"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + } + if (typeQualifiedName.endsWith("Pmb")) { + typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); + } + return fElement.getJavaProject().findType(packageName, typeQualifiedName,(IProgressMonitor)null); + } + +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java new file mode 100644 index 0000000..37c3b3d --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java @@ -0,0 +1,63 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.link; + +import java.util.List; + +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor; +import org.eclipse.jdt.ui.actions.SelectionDispatchAction; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.hyperlink.IHyperlink; + +import frend.org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector; + +/** + * @author schatten + * + */ +@SuppressWarnings("restriction") +public class OutsideSqlHyperlinkDetector extends JavaElementHyperlinkDetector { + /** + * @see org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector#addHyperlinks(org.eclipse.jface.text.IRegion, org.eclipse.jdt.ui.actions.SelectionDispatchAction, org.eclipse.jdt.core.IJavaElement, boolean, org.eclipse.ui.texteditor.ITextEditor) + */ + @Override + protected void addHyperlinks(List hyperlinksCollector, IRegion wordRegion, SelectionDispatchAction openAction, IJavaElement element, boolean qualify, JavaEditor editor) { + if (element instanceof IType) { + String packageName = ((IType) element).getPackageFragment().getElementName(); + if (packageName.endsWith(".exbhv.pmbean") || packageName.endsWith(".bsbhv.pmbean")) { + SqlFileHyperlink sqlLink = new SqlFileHyperlink(wordRegion, openAction, (IType) element, qualify); + if (sqlLink.existSqlFile()) { + hyperlinksCollector.add(sqlLink); + } + CustomizeEntityHyperlink entityLink = new CustomizeEntityHyperlink(wordRegion, openAction, (IType) element, qualify); + if (entityLink.existEntityType()) { + hyperlinksCollector.add(entityLink); + } + } else if (packageName.endsWith(".exentity.customize") || packageName.endsWith(".bsentity.customize")) { + SqlFileHyperlink sqlLink = new SqlFileHyperlink(wordRegion, openAction, (IType) element, qualify); + if (sqlLink.existSqlFile()) { + hyperlinksCollector.add(sqlLink); + } + ParameterBeanHyperlink pmbLink = new ParameterBeanHyperlink(wordRegion, openAction, (IType) element, qualify); + if (pmbLink.existPmbType()) { + hyperlinksCollector.add(pmbLink); + } + } + } + } +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java new file mode 100644 index 0000000..36f7b4b --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java @@ -0,0 +1,102 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.link; + +import org.eclipse.core.runtime.Assert; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.ui.actions.SelectionDispatchAction; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.jface.viewers.StructuredSelection; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.Messages; + +/** + * @author schatten + * + */ +public class ParameterBeanHyperlink implements IHyperlink { + private final IRegion fRegion; + private final SelectionDispatchAction fOpenAction; + private final IType fElement; + @SuppressWarnings("unused") + private final boolean fQualify; + private IType pmbType = null; + + public ParameterBeanHyperlink(IRegion region, + SelectionDispatchAction openAction, IType element, + boolean qualify) { + Assert.isNotNull(openAction); + Assert.isNotNull(region); + + fRegion= region; + fOpenAction= openAction; + fElement= element; + fQualify= qualify; + try { + pmbType = getPmbClassType(); + } catch (JavaModelException e) { + // TODO 自動生成された catch ブロック + DfAssistPlugin.log(e); + } + } + + public IRegion getHyperlinkRegion() { + return fRegion; + } + + public String getTypeLabel() { + return null; + } + + public String getHyperlinkText() { + return Messages.HYPERLINK_PARAMETER_BEAN; + } + + public void open() { + if (existPmbType()) { + fOpenAction.run(new StructuredSelection(pmbType)); + } + } + + /** + * ParameterBeanが存在するか判定する。 + * @return 対になるParameterBeanが存在する場合にtrue + */ + public boolean existPmbType() { + return pmbType != null && pmbType.exists(); + } + + private IType getPmbClassType() throws JavaModelException { + String packageName = fElement.getPackageFragment().getElementName(); + String typeQualifiedName = fElement.getTypeQualifiedName(); + if (packageName.endsWith(".exentity.customize")){ + packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv.pmbean"; + } + if (packageName.endsWith(".bsentity.customize")){ + packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv.pmbean"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + } + typeQualifiedName = typeQualifiedName + "Pmb"; + IType findType = fElement.getJavaProject().findType(packageName, typeQualifiedName,(IProgressMonitor)null); + return findType; + } + +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java new file mode 100644 index 0000000..2006502 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java @@ -0,0 +1,210 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.link; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IStorage; +import org.eclipse.core.runtime.Assert; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jdt.core.IJarEntryResource; +import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IMethod; +import org.eclipse.jdt.core.IPackageFragment; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.ui.actions.SelectionDispatchAction; +import org.eclipse.jface.text.IRegion; +import org.eclipse.jface.text.hyperlink.IHyperlink; +import org.eclipse.jface.viewers.StructuredSelection; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.Messages; + +/** + * @author schatten + * + */ +public class SqlFileHyperlink implements IHyperlink { + private final IRegion fRegion; + private final SelectionDispatchAction fOpenAction; + private final IType fElement; + @SuppressWarnings("unused") + private final boolean fQualify; + private IStorage sqlFile; + + public SqlFileHyperlink(IRegion region, + SelectionDispatchAction openAction, IType element, + boolean qualify) { + Assert.isNotNull(openAction); + Assert.isNotNull(region); + + fRegion= region; + fOpenAction= openAction; + fElement= element; + fQualify= qualify; + try { + sqlFile = findSqlResource(fElement); + if (sqlFile == null) { + String packageName = fElement.getPackageFragment().getElementName(); + String typeQualifiedName = fElement.getTypeQualifiedName(); + if (packageName.endsWith(".exbhv.pmbean")){ + packageName = packageName.substring(0, packageName.indexOf(".pmbean")); + if (typeQualifiedName.endsWith("Pmb")) { + typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); + } + }else if (packageName.endsWith(".bsbhv.pmbean")){ + packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exbhv"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + if (typeQualifiedName.endsWith("Pmb")) { + typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); + } + }else if (packageName.endsWith(".exentity.customize")){ + packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv"; + }else if (packageName.endsWith(".bsentity.customize")){ + packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + } + sqlFile = getSqlResource(packageName, typeQualifiedName); + } + } catch (CoreException e) { + // TODO 自動生成された catch ブロック + DfAssistPlugin.log(e); + } + } + + public IRegion getHyperlinkRegion() { + return fRegion; + } + + public String getTypeLabel() { + return null; + } + + public String getHyperlinkText() { + return Messages.HYPERLINK_SQL_FILE; + } + + public void open() { + if (existSqlFile() ) { + fOpenAction.run(new StructuredSelection(sqlFile)); + } + } + + public boolean existSqlFile() { + return sqlFile != null; + } + + private IStorage findSqlResource(IType type) throws CoreException { + IType bsPmb = null; + String packageName = type.getPackageFragment().getElementName(); + String typeQualifiedName = type.getTypeQualifiedName(); + if (packageName.endsWith(".exbhv.pmbean")){ + String bsPackageName = packageName.substring(0, packageName.indexOf(".exbhv.pmbean")) + ".bsbhv.pmbean"; + packageName = packageName.substring(0, packageName.indexOf(".pmbean")); + String superclassTypeSignature = type.getSuperclassName(); + bsPmb = fElement.getJavaProject().findType(bsPackageName, superclassTypeSignature,(IProgressMonitor)null); + }else if (packageName.endsWith(".bsbhv.pmbean")){ + packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exbhv"; + bsPmb = type; + }else if (packageName.endsWith(".exentity.customize")){ + String bsPackageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".bsbhv.pmbean"; + packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv"; + String superclassTypeName = "Bs" + typeQualifiedName + "Pmb"; + bsPmb = fElement.getJavaProject().findType(bsPackageName, superclassTypeName,(IProgressMonitor)null); + }else if (packageName.endsWith(".bsentity.customize")){ + String bsPackageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".bsbhv.pmbean"; + packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv"; + String superclassTypeName = typeQualifiedName + "Pmb"; + bsPmb = fElement.getJavaProject().findType(bsPackageName, superclassTypeName,(IProgressMonitor)null); + } + if (bsPmb == null) { + return null; + } + IMethod method = bsPmb.getMethod("getOutsideSqlPath", (String[])null); //$NON-NLS-1$ + if (method == null) { + return null; + } + String source = method.getSource(); + String path = source.substring(source.indexOf('"') + 1, source.lastIndexOf('"')); //$NON-NLS-1$ //$NON-NLS-2$ + if (path == null || path.isEmpty()) { + return null; + } + String[] splitPath = path.split(":"); //$NON-NLS-1$ + int length = splitPath.length - 1; + for (int i = 0; i < length; i++) { + packageName += "." + splitPath[i]; //$NON-NLS-1$ + } + + return getSqlResource(packageName, "_" + splitPath[length]); //$NON-NLS-1$ + } + + private IStorage getSqlResource(String packageName, String typeQualifiedName) throws CoreException { + IPackageFragmentRoot[] allPackageFragmentRoots = fElement.getJavaProject().getPackageFragmentRoots(); + for (IPackageFragmentRoot root : allPackageFragmentRoots) { + IPackageFragment packageFragment = root.getPackageFragment(packageName); + if (!packageFragment.exists()) continue; + IStorage sqlResource = searchPackageResource(packageFragment, typeQualifiedName); + if (sqlResource != null) return sqlResource; + } + return null; + } + private IStorage searchPackageResource(IPackageFragment packageFragment, String typeQualifiedName) throws CoreException { + Object[] nonJavaResources = packageFragment.getNonJavaResources(); + IStorage sqlResource = searchSqlResource(typeQualifiedName, nonJavaResources); + if (sqlResource != null) return sqlResource; + IJavaElement[] children = packageFragment.getChildren(); + for (IJavaElement element : children) { + if (element instanceof IPackageFragment) { + sqlResource = searchPackageResource((IPackageFragment)element, typeQualifiedName); + if (sqlResource != null) return sqlResource; + } + } + return null; + } + + private IStorage searchSqlResource(String typeQualifiedName, Object[] nonJavaResources) throws CoreException { + for (Object object : nonJavaResources) { + if ( object instanceof IFile ) { + String fileName = ((IFile) object).getName(); + if ( isSqlFileName(typeQualifiedName, fileName)) { + return (IFile) object; + } + } + if ( object instanceof IJarEntryResource) { + IJarEntryResource jarEntry = (IJarEntryResource) object; + if (jarEntry.isFile()) { + String fileName = jarEntry.getName(); + if ( isSqlFileName(typeQualifiedName, fileName)) { + return jarEntry; + } + } + } + } + return null; + } + + private boolean isSqlFileName(String typeQualifiedName, String fileName) { + if (fileName == null || fileName.isEmpty()) return false; + if (!fileName.endsWith(".sql")) return false; //$NON-NLS-1$ + if (fileName.endsWith((typeQualifiedName + ".sql"))) return true; //$NON-NLS-1$ + return fileName.endsWith( String.valueOf(typeQualifiedName.charAt(0)).toLowerCase() + typeQualifiedName.substring(1) + ".sql"); //$NON-NLS-1$ + } + +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/Messages.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/Messages.java new file mode 100644 index 0000000..b82ad38 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/Messages.java @@ -0,0 +1,18 @@ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls; + +import org.eclipse.osgi.util.NLS; + +public class Messages extends NLS { + private static final String BUNDLE_NAME = "org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.messages"; //$NON-NLS-1$ + public static String HYPERLINK_CUSTOMIZE_ENTITY; + public static String HYPERLINK_PARAMETER_BEAN; + public static String HYPERLINK_SQL_FILE; + public static String QUICK_FIX_DERIVED_FIELD_PROPERTY; + static { + // initialize resource bundle + NLS.initializeMessages(BUNDLE_NAME, Messages.class); + } + + private Messages() { + } +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages.properties b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages.properties new file mode 100644 index 0000000..86d3bf9 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages.properties @@ -0,0 +1,4 @@ +HYPERLINK_CUSTOMIZE_ENTITY=Open Customize Entity +HYPERLINK_PARAMETER_BEAN=Open Parameter Bean +HYPERLINK_SQL_FILE=Open SQL +QUICK_FIX_DERIVED_FIELD_PROPERTY=Create Derived Properties. diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages_ja.properties b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages_ja.properties new file mode 100644 index 0000000..8f30483 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/resources/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/nls/messages_ja.properties @@ -0,0 +1,4 @@ +HYPERLINK_CUSTOMIZE_ENTITY=CustomizeEntity\u3092\u958b\u304f +HYPERLINK_PARAMETER_BEAN=ParameterBean\u3092\u958b\u304f +HYPERLINK_SQL_FILE=SQL\u3092\u958b\u304f +QUICK_FIX_DERIVED_FIELD_PROPERTY=DerivedProperties\u306e\u751f\u6210 From bd8b72d15d55ca5ba8f55554a095c979bf80df4c Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Sat, 23 Nov 2013 14:46:54 +0900 Subject: [PATCH 05/13] Add SQL file to Java elements link --- .../OSGI-INF/l10n/bundle.properties | 2 + .../OSGI-INF/l10n/bundle_ja.properties | 2 + .../plugin.xml | 40 ++++ .../action/AbstractOpenActionBase.java | 174 ++++++++++++++++++ .../action/OpenCustomizeEntityAction.java | 42 +++++ .../action/OpenParameterBeanAction.java | 45 +++++ 6 files changed, 305 insertions(+) create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenCustomizeEntityAction.java create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenParameterBeanAction.java diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties index ded143e..ec80d1c 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle.properties @@ -2,3 +2,5 @@ newConcreteCommand.name = Create New Concrete Class newConcreteCommand.label = Create New Concrete Class newConcreteWizard.name = Concrete Class +openCustomizeEntity.label=Open Customize Entity +openParameterBean.label=Open Parameter Bean diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties index a727f8b..8334559 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/OSGI-INF/l10n/bundle_ja.properties @@ -2,3 +2,5 @@ newConcreteCommand.name = \u65b0\u898f\u5b9f\u88c5\u30af\u30e9\u30b9\u306e\u4f5c\u6210 newConcreteCommand.label = \u65b0\u898f\u5b9f\u88c5\u30af\u30e9\u30b9\u306e\u4f5c\u6210 newConcreteWizard.name = \u5b9f\u88c5\u30af\u30e9\u30b9 +openCustomizeEntity.label=CustomizeEntity\u3092\u958b\u304f +openParameterBean.label=ParameterBean\u3092\u958b\u304f diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml index db53abb..39bb3d1 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/plugin.xml @@ -87,4 +87,44 @@ + + +

+ + + + + + + + + + + + + + + + diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java new file mode 100644 index 0000000..b232f25 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java @@ -0,0 +1,174 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.action; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jdt.core.IClassFile; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IPackageFragmentRoot; +import org.eclipse.jdt.core.IType; +import org.eclipse.jdt.core.JavaCore; +import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IObjectActionDelegate; +import org.eclipse.ui.IWorkbenchPage; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.PlatformUI; +import org.eclipse.ui.ide.IDE; +import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; + +/** + * SQLからJavaクラスを開くアクションのベースクラス。 + * @author schatten + */ +public abstract class AbstractOpenActionBase implements IObjectActionDelegate { + + + protected IStructuredSelection _selection; + protected IAction _action; + protected IWorkbenchPart _targetPart; + /** + * {@inheritDoc} + * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + if (selection instanceof IStructuredSelection) { + IStructuredSelection iss = (IStructuredSelection) selection; + this._selection = iss; + } + } + /** + * {@inheritDoc} + * @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart) + */ + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + this._action = action; + this._targetPart = targetPart; + } + /** + * {@inheritDoc} + * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) + */ + public void run(IAction action) { + Object obj = this._selection.getFirstElement(); + if (obj instanceof IFile) { + IFile file = (IFile) obj; + IProject project = file.getProject(); + IJavaProject javap = JavaCore.create(project); + if (javap.exists() && javap.isOpen()) { + String packageName = getTargetPackageName(getBasePackageName(file, javap)); + String typeQualifiedName = getTargetClassName(file); + try { + IType findType = javap.findType(packageName, typeQualifiedName, (IProgressMonitor)null); + if (findType == null || !findType.exists()) return; + if (findType.isBinary()) { + IClassFile classFile = findType.getClassFile(); + classFile.open((IProgressMonitor)null); + } else { +// ICompilationUnit compilationUnit = findType.getCompilationUnit(); +// compilationUnit.open((IProgressMonitor)null); + openFileInEditor(file, findType); + } + } catch (JavaModelException e) { + // TODO 自動生成された catch ブロック + DfAssistPlugin.log(e); + } catch (PartInitException e) { + // TODO 自動生成された catch ブロック + DfAssistPlugin.log(e); + } + } + } + } + + /** + * 対象のパッケージ名を取得する。 + * @param packageName ベースパッケージ + * @return ターゲットパッケージ名 + */ + protected abstract String getTargetPackageName(String packageName); + /** + * 対象のファイルに関連するクラス名を取得する。 + * @param file 選択されたファイル + * @return ターゲットクラス名 + */ + protected abstract String getTargetClassName(IFile file); + /** + * 対象のファイルのパッケージを取得する。 + * @param file 選択されたファイル + * @return ターゲットクラス名 + */ + protected String getBasePackageName(IFile file, IJavaProject javap) { + // TODO + String filePath = file.getParent().getFullPath().toString(); + String rootPath = null; + try { + for (IPackageFragmentRoot root : javap.getPackageFragmentRoots()) { + if (filePath.startsWith(root.getPath().toString())) { + rootPath = root.getPath().toString(); + break; + } + } + } catch (JavaModelException e) { + // TODO 自動生成された catch ブロック + DfAssistPlugin.log(e); + } + if (rootPath == null) return null; + String dir = filePath.substring(rootPath.length() + 1); + int index = dir.indexOf("/exbhv"); + if (index > 0) { + return dir.substring(0, index).replace('/', '.'); + } + return null; + } + protected String getSqlName(IFile file) { + String fileName = file.getName(); + int separateIndex = fileName.indexOf('_'); + int extensionIndex = fileName.lastIndexOf('.'); + if (separateIndex > 0 && extensionIndex > 0) { + String sqlName = fileName.substring(separateIndex + 1, extensionIndex); + Pattern pattern = Pattern.compile("^((?=select|update|insert|delete)[a-z]{6})[A-Za-z]*"); + Matcher matcher = pattern.matcher(sqlName); + if (matcher.matches()) { + sqlName = sqlName.substring(matcher.group(1).length()); + } + return sqlName; + } + return null; + } + + protected void openFileInEditor(IFile selected, IType findType) throws PartInitException { + IFile file = selected.getProject().getFile(findType.getPath().removeFirstSegments(1)); + IWorkbenchWindow dw = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); + if (dw != null) { + IWorkbenchPage page = dw.getActivePage(); + if (page != null) { + IEditorPart editor = IDE.openEditor(page, file, true); + editor.setFocus(); + } + } + } + +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenCustomizeEntityAction.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenCustomizeEntityAction.java new file mode 100644 index 0000000..bd078f5 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenCustomizeEntityAction.java @@ -0,0 +1,42 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.action; + +import org.eclipse.core.resources.IFile; + + +/** + * SQLからCustomizeEntityを開くアクション + * @author schatten + */ +public class OpenCustomizeEntityAction extends AbstractOpenActionBase { + /** + * + */ + public OpenCustomizeEntityAction() { + super(); + } + + @Override + protected String getTargetClassName(IFile file) { + return getSqlName(file); + } + + @Override + protected String getTargetPackageName(String packageName) { + return packageName + ".exentity.customize"; + } +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenParameterBeanAction.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenParameterBeanAction.java new file mode 100644 index 0000000..3940c98 --- /dev/null +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/OpenParameterBeanAction.java @@ -0,0 +1,45 @@ +/* + * Copyright 2013 the Seasar Foundation and the Others. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, + * either express or implied. See the License for the specific language + * governing permissions and limitations under the License. + */ +package org.seasar.dbflute.emecha.eclipse.plugin.dfassist.action; + +import org.eclipse.core.resources.IFile; + + +/** + * SQLからParameterBeanを開くアクション + * @author schatten + */ +public class OpenParameterBeanAction extends AbstractOpenActionBase { + + /** + * + */ + public OpenParameterBeanAction() { + super(); + } + + @Override + protected String getTargetClassName(IFile file) { + return getSqlName(file) + "Pmb"; + } + + @Override + protected String getTargetPackageName(String packageName) { + // TODO 自動生成されたメソッド・スタブ + return packageName + ".exbhv.pmbean"; + } + +} From 8155b082b96b6d37ebf7b3f9b70216cbb893e2bd Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Sat, 23 Nov 2013 16:55:02 +0900 Subject: [PATCH 06/13] Create jars at dropins. --- .../org.dbflute.emecha.synchronizer_0.1.0.jar | Bin 0 -> 11852 bytes ....emecha.eclipse.plugin.dfassist_0.0.2.0.jar | Bin 14047 -> 0 bytes ....emecha.eclipse.plugin.dfassist_0.0.3.0.jar | Bin 0 -> 44972 bytes ...sar.dbflute.emecha.eclipse.plugin_0.5.5.jar | Bin 135125 -> 0 bytes ...sar.dbflute.emecha.eclipse.plugin_0.5.6.jar | Bin 0 -> 140647 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.dbflute.emecha.synchronizer_0.1.0.jar delete mode 100644 org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.2.0.jar create mode 100644 org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar delete mode 100644 org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin_0.5.5.jar create mode 100644 org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin_0.5.6.jar diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.dbflute.emecha.synchronizer_0.1.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.dbflute.emecha.synchronizer_0.1.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..2b397d94c79ba535177aad2208167770115d6f4c GIT binary patch literal 11852 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 literal 0 HcmV?d00001 diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.2.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.2.0.jar deleted file mode 100644 index 33083a58c121b858f6397b6f9b240a6481cf77e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14047 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 diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar new file mode 100644 index 0000000000000000000000000000000000000000..b952d59f40c570d136dda36ecffcb87a1f4bacd3 GIT binary patch literal 44972 zcmbrl1C*v)k}jN;wr$%sD{b4hjjFV5+qP}nw(Uy&b-H_Idd`2R?>#;5TDjI zBffY8&yFo82?UG`01gfguo~zp1n^G}^6#~@u#y0cxQqy$w1AAbh_Ip(t+Ys{{G?1j zJ#^PI#V>$`v!E7a`;`Uy(|(N28sAs_W7~-_(#)_IwaAzx7rVPD(J-%4o{)u z(KJGB{;UdrdCdAtaGjdNfQ}H$vwjW1_$4mHzRhVr#` z@~eDDSaOnJ;GGuYk+9zY0E7Sm0ObBhdqVuPJ%N6I5e)nfYyYPC+w(sYLjL~0ot3kx zxecwGwbi7WrtLZ_vJYO(7e4rjaMJO#G{4kl=4vO^NKxV(_C9~% z#I?!gSy73HPr?a&&&2A!&kWDZ;Iq2d0~1u3BHbN7S*8a_x{Ih=Bz}KC-Amr?zhCD2 zO2`mOn->(MdZY9())@H|Z!fSarkhxm?&U>t6&Lm8q6b(+Q;Wo0MdM694t8nGYk-LJpw zkd}WF%{VoJO1is#h?PHwU{#Il=~}%LiRE?6kJtDUt~UanspU(s8zGiuhV=QU^;?Z= z>ltkc+aWbdPR|+K)_x!v>M5Exf2bb{+M59EMjXzo4nz%GIB$c1bYp2R)QnQS+E*gO zR^Q8e7-$}fHfQMwe~}-mgb**vPc{g#pLYV61oX6VD=1bCBnL5PM9(tL4-{zd5HTId zDFJOv16D#hI*fDfb8Q47)6+u#7%N3!-f^+3>ZbSW6hd<*mn!9PQ49UDcWZn zPIA2bwQC}V%vG|ObW4@j10)*@kgpNtm6Nh9uFi~Vag3_hGkUOl6bI!7E~}=Ys)HP$ z7~L;h=%5Rv8a)@i_4nZw6zfIlC!!A(z}g9A>x2II$069bKA)z%5KuY^gLpuXR;O0b z+3|&f)T%xF_(wk=bWp9$aYpK$g;8VROxHUgc_L?j!W#G24Rx{er^Tk0(lzDB(K@`; zfmUp>6r^Jiy+kx66DQ9gi3YX}y24(UYJhPOmMmok0P|e!AjWoDzZ zEhWg)xR;<)sxfImwYfU2$y@R)>GP1Tsf(bXIjSU_{Xnusd`6HpAT!5Faw(g{emFmH zcQ*UQ&W+3t)ldrO>zD2@`iC=>gXXolf8`txb2Q3|B>6%kP zV>H3DK}77k%<2)10;NSx+v@0T|yvO;0;W#3lHmp|Vr(~ttS(=LI^TVi{v zFI{es#wBif(}u46EODD1`8c|IH>qogHX)qNDC@MGz!3J0Z^jBl*^gE|uUh}|DvgDy zU3S7Aj*bT3<-{JrK=i2H8Z_P4GWc@jFBNe|YY8aWlJN9vRt2dsr$E`Bv!yqLoLsHE z_H-u3nls}|!-gWPf|i*8g}y%%!u~U%6$8Bu-Cv=``~OiJINKOm8PnQ1*xDI8IGGzeMn<(m_VL3D zzwv+S_wfFR85&fXSC1ZzguWn}hyuQU6hX}o34G)@p1R+IW60LKm{bpU8QK(@*uGV#DT;68q5y7Th=YUdp9`_=V8QuRaBbv((B zn*BRcd-BIq1L7Jyii%&9vo_NSE;ipI%uM{kBG4ZOCE`yBiTu59jNkd>zfywBpA1U) zKWL_Fq5n_HRmRjp_R+%!x#nKO+tD?$l3=u{ZM3%f&KabdLnx7tOu{>Hq;YS zpJ(42>O3UfWit5*n~5N^DR1*(Pry`{XM#2`K{27GGT-1HCy|<|6Pa$T$v=>>vEm*$ z8a{@_Cavb=kZBVcu2Wg=Q<*N1nQot7{9FKB4Pk$HzUI2YZnm&vvw3B^jgioq*JgW7 z-5v$d{shq6W%v9Ul4CBuI$r+kd6LuX`5^yU*1w1(U{V4iJr$9Q%<}Pd($fYTGBpdG zmx;u{L}DYOLbLjc_w9wyOk-pCIvWwyXvxZ=RBL&qp|RdsRCYRR6tC;Ygj!tp>)g`- z$SK7A+!2mu%j?_{SM^m9-PoA6idL!{i^j0X46vhKHr**M~nJ;d;7djzW>3Oz0E1_eolO-J-_(Lt;=1lV5OeFP)Ax? zD6MebcJO1{I!m4K9S<741Q_{89X%s`0n^D(_8fM7z3q*dt%Z%bwI$qjTw455G7@-H ztl8DR$>W{V(?fI|Bm|`S37T^xOzgdMYzzz(l++B|spHG+CTmRv1uX+Xq+rFJCVam1 zhMzA9FD9&x$;@oW;kZ{-r4f@-dzj{Fd4z;{h>(n0#fJs+4F`#dfse1st7#yKQq*(M z3n=p!j|~`U%NR~pT3%ABYqXPk!STUJ^)bey$xuj{(F}G?rQgx9wFbs$s7-Q=4{Ltr z#s&ueD2xIJ^Jn>6&1SPB_(br#XjA!b#oqj%iswIE)5O8p#^_(V=AWtlsPz6$W$R%2 zmnaec8>O+KmARdx@n7Qb$7}Ilvj2mFg^|-=;_^qx{XcUtw{bFdu+g{rOYHuLbN?51 z&gOrKBhCL4M+8#tvNE@^{BG=IZ1`I; z?cZY4qPn{t@*>Wsj!V3_3mH72fC#VvLOi_IHyCH3Sv&G@0s+5*pUWn$anM#S`xh19 zd)C&KYUPcMEAt*XG!_AvAu3@!J?mwSiyqBu8k&}Lp5~3)p7pC%ag*QH_Qo z(2(haCE2x-n>3}{o8AV&&PS==IzvehN8Cul==kd4iO}qZVAxIEXYgxIpYmHf&eitE z`aS@5CAHbjK@4&!MD-lBeR2vTHerBQ;&0x4?<++hS2<25&5M+2=@jCpMnJE8N<(yU zYF)J;*#kmqfPM<#2ypls>eN|j$*;`c?)dlZm@F|fx0 zNM2QqBaitij491>swHTbg6B9Pj8+y*XkVgw3bSDDtR|sRoq{D^aH$!4a#BR7$|6N9 z7}pt>xa4K=aiChe4wf2xR2foB$~qU!wBHkmNYTYr31-eF6x%{nAZ-MdV<3X$C=DDE`toiSr6HbVXy!BqMH)1X(Wn|E zb4Q4ek{&0RM8No`rW*6^wtx;% zK7@^kiuru^+&ZH0(E;**SSRVoF=m zvb-Xsy5A2-Jy#PG1m|oVCb1PT;XtNtUpOevuAWm9n0-*ylh^CdLqx~iB6F&jj1PUP zHV0J0$+UIWFv?yzUyJ+**p>)AxGuFGcN8skVJAqX@>T;q&XO_4ytEz7iCOEHq=1nK z4xV`z_H9+bqD4UziB}k0vUs9-@}>>cQ-JVF?G~A-dXo~!*zwg4A4g^N8+2VYrFqb$ zm?r)Ld}x7{$#Y1m6P=aCbrdzksZ?zn-c!(MC8i8o$t(C{UoZ>1B5HX(@D$$r(OeO1 zjnfM;YmA8=j<$BKLXeJ{C{svIZ3lXiQ~997W?a>!ajT$(IKuVnLTof3M5+pob&Xo` zq@%*Fnge{^Vw~A;1S8O4u__;&w^icgM(BATo0x_EO=_yLz2dHMv>=ff6{kRri*Ump z2VYJH7xJ+>hGQ}bUb}jq+X@~%S!tmTbTlca89`lv7g2>Mu6WmLD9k}LjDlCra(x%Z zxuGvOvW4GoN3e4~je0Rg#J1Mg{5H zBhR^nZeZse2l}+WJ3d26-;)c4GomAjvy58J-{M5v?bAA0w6y<_n9whZ@~p{(DJiSk zH=@N}VMg2YbP7s5#q>H6EDy@`F6;DE5qjPsvG-wLQ{<|LztXP$l|AR{u-eD0QF&Vv zUw2yB{AODB@wo7%ym!A3<|fyV`!wiXxpXU}&d4)yPYs8m7=OA!LeyIDW6ZRU8-5?0 zrry+r-QYV=6X|)&Vx2(JgOf(8H^7mj(rbw8>RfREDZz!11kLkS^o#aZAfkQ;oHVC6?*~ zEDPNpNn3X*Yr|f}FHm1Yhs|ezy3(_Eapy*|`gV8R>JvAVYI#?V?`(DE+ilsKPd5g? zGE_S*kh$Jn?hZ~>IB8m$5nK)Nn=j1rGM(Ex`@>4VJ7B^ozUuD7z*Hj@`OhuX*E~(= zbobhxQs)(t=r==A;|@rPi!c!zOP73IB%a3vZNn4_<}XeWYT?5P=KKu& z(Jo{e4Oawv=&zIAJxyx^%#<0o>YC+ryVLK9PK1ZYXcH(`IORZ1S{F&pWeWE#>XRK? zXB~SnF)mOPO(*vHD5qjpQP12xN`3byn2H~7hLh0_A~q3QI18uDA()eND>QLd`dif1 zV^{+_stv25O(BDNtJkO$JvcT8@B-7Y5fGZBCL#SXK)(NKrSPk$-j*0P7rBLz>s)@+ zJHv}%C#kL>p|NO6wNW~|afxnJbdnq5jL>b1dAazYl!XCz{Mv9~6e+Ae3Kzc3#hJrx z`be(%*BPjHrn({Iur?e3o!4D3aFy3x^S4LZy=D7#GW?RI0R5oH&GLZvOrHc61LyR1?y4Q1Nw)^wz9 zcs*sxS#Px_iMwof&w6P$7XuiPnN<<>_w>apGfhNmfk`y%R$8|%6`h|V5lrvv2#TIs z1OC5Ml(5o}WufLYobvnqb9Bs4xa@7@*cxy`qNuif8-sp;83c6!*$Zt~I(6b4v{8y!kLlcL}$i$k}RIDZJr2PdDfKO(Q`> zYHXc(p{s?I9w-OK+cBf&V@lG)73+OFYgzy4K`n$NBg~X!h=W;+Kt*m(Qnh>4s1}%B zi}}0{eKDBo24uQRlM&gBfU3g`g@eEVD$f90l=2gm0mIq=bN$Jo0%@3#)Xxmf^ky?C z;DkT8Mqg1;R4XK*ZxeJ1%}v+_=da26XAqFP){ zulDRvW=mkg-~w-e=IQvX0j!Aum2tw33!B5-_GYgef&-*<@FvA+4OV~6TNS?G3)-P> z1sm|Nyz!1#T1}`REq*=J=u=)r40gOrpzLQzrb$Ll9wVGoMMf1pClAal7mu1oTYeeT zvyJ7QmEr*?Y;RRVjY8PBD#H88jZRFY5O@l+x^byjAPbU@UJsG&&EfPZqD_*PgzIan zK|DDLt#MnHuJNLAxAHW7xA8j+tId_nU{dp3C|+k{Bc7y*!kR%^`Du{*SE6^dQjMa4 zqtZo~mr#YW2(%j6QthB%x6@aPM|#}d!L6*@*n?YgRrfo#v4-d^vQF+!@t}Ptj7UkI z`=&heUjym_)l$6Cqve1{Wlmr^e0E;l-L3xbINc~7i3bGIof|}?GNv0_@`DM_2|2E~ z*F*E}EB>ZjOgijZ#;4W|*D@BaXqDaR0?u?m7G(a%GHOou0+bk3nM_-&1$rZO;8=Xc z*>^9e&>*~U(+h>2^ZO9b3v_N}VxL02j{z$a^%5S3F5F};yN89!lqjmk{-$U?%5;7@ zvd*6oV7Eu86DhS|wxCcEezYAV@y{;rw<K8aFi)U{vq@F>N}?})oQQ;4C!DTWdbx4}u3gw`)3r_Pv}rz>P; zQ$u4+B90yLXgoqtF7-7Y$iKazN9|;A!N}@?W(`K#2h5dEA6=n_ z6h`QD2d+Zqt?F3Vf!tMX$%v#7L>nxC-GgV4h#;MsHY}ym=cLYA7|l}}`8kGUSZJLW zL7@<2l*O)wE+rzoC&x`k+WSKH2Rc?-U9b-c0|4-Z|Ig^ypWA4@zuJb`=^I+=n;O%Y z+nCt?z3q|?XMp_;odGX@Lkxw)1tc5u`kCa1hW#|iX}B6|?}iNmw<8Zuh}o24VxoIJ zjMVc@J9sDuFN|2U)eRBLxdQ@3Ra`MKj(x5G`DJRa;Yg5Zoyv379Md7Vu-7CBnZun^ z+i%69hWEHsjl%-j|MJU_ZVG{WY8c^Z(4^cMoi6rvI0^?LWYQKXm`o zX8ytHKM;(61sMO?niT&}9RGe6_m{TH_*WPknf%5i%^m+5@FMbWN%(Fe@HbI%e?MOQ z8{$x@WT}dzioA&iD705X10J?Sm?SDjtZ1>QkuWA?B_XCrX#Q4eiB7A}JZdy4RraCk zT|v^QUCx)oH@4_~J;DDo1n(j_)p44~^}7Dq`~B^x`Ue1Yjzx~_PVDh=CI6c5rDi*q zXQT`{&1%9_m$i8DZWEAsBUWbHdY#Mj1-_mCjK;d=l7R3rOaZV7vV_96eLTrHm%z!o zOpA7e1;||D+*7>4Yw=!MkKJkNN4+)6h011GP}h1H9b|^?qlSQ4b6?u#$p}FK2r9Tv zhz9il4Qd`L6oWCr9u+YSBy^KuU*g;wq>-XO+(r@>EyRQAu?1kMvaPDgOf;NS3Ok)$ z?Lm`K>-ms{MQJ*&(JbDgqHjj*{v#pMtYbDRN%@|tN*M`Pv zg9}z1ZNQyzOUVgiv@T~IP8;)34~lOr(K@WD5}T^DR-YLrAYSUoPR7sO@AQCd+tP!d zelwO-1>#6Z=!Z6o#wiyY8ZK8~H4Z5;gGJiOmW*~@%{U&saQaUV@*yjT8>XI3L^Qgf zI>V-RfcgwVv-PBPDM;w9(Xv%;ygERRDsV*KmE$YwvknZEvx8hqZxR$=@r5Nw0RHa25Sjewbgm z!7NkM3+^E1$~LC=a(5|_rLQH`4bFq`C}^h^zjZwe;<%lu#Nno?^{IAzH=?5mC#@fb z;WZJCC0S^QPzIt}@G;2^r!939HTMe{NaP;DH>*<@n{topC<^b06l1}>(vkm>#gRGD;L{G#-*%uN7e>SQ= zh`x_3n#{7m$z-8Sn#|YZb_J)!)z_Yr-XL7BKRnOl()PdD( zgp?$q-AHD)_NZ;bTYDIZhH2V{P$j$K1EPF((1INA+E%2Z*`rPc{fFohWNq_^#$p8< zVMmIxu&`HtGv(g({5uxI*S*@~h54r{`Qa9cSGs-VEo;@D=fqAh?QVSg4og97(m9;ar z5%`;IL48N#zi04DHFvMy!0A_)k*jGv20bug1*9NkT7VU5Ly>d7nV6WibRU8kFmlR; z3@cFjrn3pEAK~MY$D)e7A=MJ4u%=~hqL`IsBbdhe+FRFk`%_o>M_1}3DRH{L&#&RD zj?8DS?(Y4Mt*(bNrfEPmS`#XAM72y-Bz?(c>PhI~cF#Ci)WZjS1GdQai(D<8-a+sgqKX<3)+dITSbGu_jBdMmq&blD_ix=5q#3 zUs=6cB^GLC%Ygi=tnu{A-^D*6ybUZHA z`VbY?AAI|=P~&$mERT%99$GtbWu>_($fw+0iPXWrDuh0Ik>T&ixGCrLy*E%KWG=G0ciA^CCwDgxWC9PnBZ{gWvYXU~$ zdqml-6_QxncVVhEEix@}Y4M~ks$w5Z8RQtMTa8Ksm?g*;&j=;2k1OcHN0gefp7dMH zdW!Xv`OFluk}V6#dWxb+2t&HX*$`NaheyC-DJharPGzUjkzX*Dg|TxJn|FsIDCsro z{5YWBe~pDzriqzmg@n-!tAJ>(Y!~Az*TP`7JElPl(yD@AKxkhl^oEy)_?sk(Lns(9 zH&W6*gJ6C=zdP>4Ln6{6KR{}^?G1}K%I4Rr?RTiw;&7=+jyehIZJjWyZCe((jtY&P zK6+bGA+d(CW_gb)e=zV6d1m=Nq+AWsQoWfZ034Qk z+p&Foy=8sahg-;T#~{N%QyX-smT+#pQ9SZpO_=LG0&b`{Phv~~H&wpF{?D-Iot%u; zItME!{IZfT)Si*(;ZeM$w{}lgiK*vOH^A%SN^a(d&qW@j64wSVehUs_I|t>47&GxZ z0TjGGMP$>nRN`Y&@r?zgpDP^2ac${TKJhuNlF?d_)I7f62th5qpcl?sdeXw1y`}qM z1r_S*aMNWkDHHe@2(L0}zd9b?_ZP%6u%CHL_Z07hDbC|r4tsWop#V*7OUv4Jyj(Lj z<0l6=Xf7EPl5EyI)w0?uRc)69RdsxnKNc6$v4qkO+DL!O?lVE^7?5&ynOYN#?unm# zP^+&mNjIHL?>RD4BwdZOe-JX?LNjEw3sAmvgwgGUC(IVF*6L)UXYgo%UW1tg`v@lq z)#&gmq>q0W*Bw$t@hbdT%7KWY8-MI96G?*6mAjYDxZeT6lsS2jciJQ-bB!@cEGEx} z%k=1@DXV@V-HH}=C?dk@zKrF&6A*>EhQ*rcJH^H;DTDAlo^^+W!Z$b#Y?AJw>rs3q zb%fIvPoI=Qo;QCY)!kE#{2sS3&+e)8j@fM=KYsZ>84ru9(0fq1!hsF=g5y)YgYt{7 z>6nbAoy_{lI;89c=<{Ss>h&CU_>-aXxn&*R`;F_DFbcl(1?zLFmw>?wZv5J* zc4V%7XxezVw*B{6l@@@2+Y9qX{B!mIMmP9UKVXbsNp8 z+LFWXVr&GL*&B%u>E7 z!tt(wPsjVy$T(jQ+4b^Ne6uC*p|U5a$=w_AC*(cF%fk|PWL>`&a&E>p@3Ap@{cB|# zaEd=9FNVs*B*SyeTED6L<$VghLYP({U_8g81 zhiA;d*wTk7(I5vZrT0#4_&6FN!W@~Ft%?(-=96WMYLEVBA2gi27&@*Q)(ZAcyqUgi=6fDmTo9FtE) zx%qDqWKgkdJd7`bI3$*pLV$Got8s)Rg;bL=hlCSJ%wRo$pfCiuz!84te4(2Fe+a3O z-2iY0A3FFSWKyXnEBJ`l1Pmmj?Bb)!W&D8O1Y;0&z!jbr0Cp(vXKspI4r`AcfZaIc zKD-8tb?_N4hMM4PgVS*U+Q<%c8M0$x(D5f3xYxRBs*!Kj2V%{S&(I#(Q@9uuk;zPF z7uS(d*Q|xZByrg%*lNZVt_HeFl##$0@%O|BtK#lpYVli>9m=HFX8?yHpDZ$hYwW_{ zstwn-=tX@nWV^47)Tlm?$b~tcsVhf+?R>xJU6fk&F4&Z$?OiUK1Wr_XexwKB>ORM7a$z zLVi9Z2fOV7IEwH=y2T#Y!1BuLQ_bamUmItHod6gjIC1}`V^5C!0KKQ3W$o{#WRt+h z8uGmKM(Op&z;!}Xbpx|ET4$%ei4Tj17;JWe-PRUJ;3(A4Cw^Uyk=41;8bmbL*aE-I zptj5;wjA?Bs*`Bz8>Knwh?U!x+3vby0_cSYMBHzmdhW!F4Fvnpr!L+TPX2+4O<>Dl zZc`B54xtGie#;z%xMIzb(&^P5BXfOp#+mfS^g=Im&?^ewpczyx=XXJ?4g8W{CpOju zyVr`+IM*q=;CXaC90ob-}!;Nv9gvS+zM#QTEIKFR;8ps$z2P0u0G5l%Imo#4qE@?(mZ;j*V2vl#_6n`0I?vCE( zKu6`jUgbN__VvjKU=8muyz1J-C62HzEr7s`j`L#pG=`Q7gYk=o2 zZNNy}0Z0^CF?YLzFkx7zTvs-AkkTEoxr5C;^xZwf{WDa49 zhYCno(_-ep32yDxKslXP2RBzmK9qk6Mv{I4{7AUHq9uVbU>ukp5sK+(rChbjf=j}%fa3{huT){I_jGnb9Qqi z&h*%^bS>c>IgV2K^qFf_<~17QRfb)d%|IMh2N)ov z5RFmodmO>KTogBWkoIY#@G_}L)viY06}W8R@n~Ugbi(wE&HLAoWr72~v!+|avb6zD z2tlEjRzzIps74i8E15Uj4fW}L^4nNaqr$#g2DlBBX^-Zb;#7`_->w5FhY^O9f>mdu zAy0mFpA73)#aK)>suOtyn*qLI=;dDZ>rp~XpK?&&#iLHnMb?9q*6<{<4L$WVA!AD* zOVC1S4bbYv^ns;IbYbCfvsTZgT^1H}`MtzNLG56TLgKa2!;SK}6+FSC4d{A{sIG8? znFvo%X19gooNPj8f&d0eP=m`pK99b=Od+&n{ykh;Iv9iIEb~*oedWi~wvrGftJwxb z0F?l)xA~f)lgIa@SZ(TT!jI4lkd%gWBVQJDwP8f}RP^spgz7-aF`3}p1V$m!NmPc^ zKQbtZiH1}Lx)6y-FJ?3avi3k#C{WKka{2_7KB*w9sj}@akxM@%ey7X5i}>f&O;*2MMbEt+l{0DDgzTM`;Z)wPu@kc`ip|DC~7d!BYJrDZvM-gsnR<$_X36h?& zTO7fY0>{{oLHJQL4d_|JW*V69c0{4Z1Lz7Yha>a)+X=t4QdotJEUHK@l4dB`Wh3Rg zi@Ag9*S>sQ0ufybf6y{t4zmts#6k6kd!?MAEjTnDXn0)7Y0mB2$|TTG1+E36L)btS zkEeI3$TTAk(*#A9ADzjqT9?AmZ^#gaBl`=Srd?m+r}{cu4b}F>bYZ3p;A|L&L8`%p;V)svrK znSW5%ZxR(hxJe<{ZI71>vhooyUKoplEqIorNA}hdAH(HMx`E&wrsHNd&GEz?^2bw(sO26BnyRt3!Aj znm~fyfJN+U{k_&7WiAehEUuh5za?}5SuS63r~MV>w0Uq2J#|{GeV}u~pTT8l<%`{L zNN~t!L^FFp%H20f)b}c%Jdc^AyGQ}3+KQi6x>OcbG2C(CA|g!~gWGFoe&*|j?2mYx z44sn4`P+Ll{-yW+G0ysbhp_(vIR7UuY-nq3t^XHC3;(^y{vVQLj9rCnZ44cLzbC5Z z9{LVOLVw@FKi(A8S4ZSwluwPd#gxUL0<7Qy0sQEm&b6THp_PN^)S)$Q&gj|*2bh;l z1+k{CNvY}(A<;YRQ{H4U3Bbb~nf}D=!N9p=fj>ga?<9SuxA!Ct&r@eD3Kwf-E?Px|@uP3gYx#irg)QCzEsSn@Hah_g!;aPvI{Zo*F~9kgpc%_Xd0}p6tLTKO!w; zGLX_x$RV&cg|?iqlX}FJ5$V8~M?n|g_MDFgOzWU#DnMk%khQf^&W>ih^xDpt@EmP= zs9-Q9rY7S1-3nzSVni#|c8z1G%i*i``vYb!&d}I~>cc%*m?5)kbyb>?n)uy2A?@}? zc@!1qL%ab$$w*#14KW=Xbx)wZ)fJg?m3rl#Fv#&HupG{;QVFNxl@_fq;j1tV>l zXFbB$L9sp>S>)seEem3B}jR|0DFXo8I8n~t7bnqJNz2ErQuzP{90Dv;CV zw}d^6d4?!iV1P#Jk=jIe%~Hg^k}(i3h5kWlWr$u*-ay%U;5V0G1>Ds>6ejy;-!vK zRjuUKir67z59cgSqq@!@{KA5xtLjW_fJXeGlKkjw^l2j{XA`lV?4>#EdZX>p`rd@e zcCYT4HQc(IiSiTuYJ1oc(+7X14n(OR&K<_a!UG!WB{T@Hnt*EfG0mozvFhZ7q6*Bp zTvY}`c)VQ6HPgD`73N)vV~@u9&pg+uBR=hT`|VDmsEE zSTL3uA@~{J%lAbf0GAyf-qk2WG($gjOonk$>zTdg4sy^~Cyk#sH$NRK6ZA4()c>k#5jnHvx2yw?F9;%0w#JFVbu9;C8{)&uY`# zxTX3rOZ$m3!f&E=p?%F+v`Jk zbv=oUQmDGS^(aO}+u(Y}Wy_GU-!re-#o2g(4%=bM?x`n%Y-A!X=-wmVM?uyf2xKgBKnD+;Z z#Hr9rNB6JZJIY2iol1FcpA;0L4b^eeejKfIJrl27LkQh7Q>7oyhZP21fb$EUL(3m} zHTlRjFuc_}8pzu{Y@t>1$$I1hh?O@qMqesz``I&GHv67{wuWyw9SrtRd>Vb}ADL9I zb^XD*gsJ`LuH)aE0tgc+_=f4ob5cEhLUmsW-4z1~t8Z!gjuAiw)8>3=X0~5>F*)8l zd(u~Wd+}aj7L`3awCrL^=p4=^rCO6~lgU>49JwP@y-C)9=Hx=bEho8NpoEtkk9A9B zU}h2CVSYSQ&E!qDKk)rgbbx5}IR=6O09gFK4)9+k^TMC*Cb0fnMaTc`CcvMiNdMbX zwQzn263K8-OFl`7KS7#gQg1@+}o4P1-=3IwH zGwK|4CKvf3Psd`LAFtc_v845e_STdL@ zaObRE#XQ%KRR@{`1v%oKM8diWVtdX#X>%SUV%N9e8bq^u=H^#T%p+RsQa-+!6N1j+ zfRkE$52+B`@bcfwQNahfFtQ2~BC3WO(NE zwt;x@G+M;ySa)e-y_!eC+k&G&=Lvg_858l>%)toj{F7wDYmhr6`${hqwq?23&+2i=niT zqrzVZgnHoJ2k_W#he(>#7p{nsK}b&s7m}kaHEh0t2JQH~GS;<v4uZ;n#yfIW++N zjYJq+bbbA-q`L^R(-YB6!oYJuVgB7)*UXHY7mAGuKQakk`VdmVjx*_xP*nEE z5br+ZC=E%cGYZi(&kASlUN!czz)H5Z3LhZC2+y#%w5%w^?UueSy~~i4S`zh|9Xtj| z&467lPI}_>vx13lg~`erl-*gr?53zWS;D`H{8CJDGwX@_b(&1UU*v69B1JN+*4=`@#kj?@>>$AExzXDA)PXmD8i6wFSP zX6#2C`{C!yP5}33gd5M&HEE-ULmQgv%IuhapJ;aazvWhJs+NW1ajiqBnu*hF4D5f~ zKLN;WfzS6JA!ZznjtbeQ1cC4k4PGlJq_EVYKo~8R`X(;zJ+Id5mOw+4vS6UJ>`3oi zpNH}Qu7qu;saT^KuV1GzC~D7wM4zzWM`8UXc00_u2T1q6?f=!&CKi*F8vTA?oC)3O zubgLGg;2toGvlsNMuj_NdDw?pp=?i6W%wAsML?d_1$*Rw6awuI)CqN7qtgomNQOJ) zg2J{(+T<3N8XqO1N+Si99~%XpKM&7YRA`drHwGz zI+6i$7v6X$^Fz7T{sT0MDRQ;ua=9A{cgk{&y<~~a+&!68LnZm(Ya z@z^A(%CRI8G**LpKj{jr3(XI?Sber&631VuFvR6G+xh)GgXm7j7#N`ef!%1qV{GcSPrlFfp z*Z1(C#`lWv620^Ow8=pDaO8t^N)a)_mdRn8FPzcyN0Cz{WJQq0I0wY~kBxwZUPM{) zx6&8-N~d>bh=wVH3PFw1O@>g)dnyoznv_rCDC+Njr#lv&9U(FFTRdU5S_ zwjg22M>b@Gl8$8WNU*uz*v3I;jl9%WeH-T@&b5ChZ%Q}g9#=x7lCbN2um>VboiRKp zOP;#M5y=)^#1FASOSjC~vf|{^A)nI9?w_gXcsN3B`QL98QTY0&C*Pc(j1~0edOaE! z3w4L+3g6k>5X&CW5X*K{x!rMMB6stC#dNr|-;ny`@6o&`J-ZQ_Ux?pW6f#Y~*;|d+ z66b91M?-$v)ffu-w1@GH8VcD{ZdqYWRau52f)45$DbgfuK2%eF2DzqIQu)m`6piOs zJxZInIg|u2e&+6FugIJ}R-%o(b}PMWPG!Q}qp>uOBt9#9;j4~CBo@|xOwxQ7fxb$B zE3ZKBxj!b4vy0mqtf`y;lN9f#;u zmxV0{d)Us%%Ai4bL%#-$RK^YXu3B(z{U--@bUO7Z2PbYLU)sK=$ps%4k{xW+a4YCn zC@EZcw-=^=ZO}w0da$85#SKCWN7QkefBk-elRaa0p`gblF7oo#26XYsrKqsyb(WVdlKI@CSS8ruIT`JV=v4nQZEr$}jrKAZheN7p3Kva7Ok{ zIMdacrYVXcPD@wbmtNlH{>zhoYTsh{?O;$Wmt8-dutqFMX(nifWYov|Q$j#Exmx#| z9EimfI6TxG1gP1*#_?BOO0QZ7uHqV*H7J-sX9sY(+1d@RXzYuF#t_d_Qr;%zCuVtGS{aW7__bN^fPzxB#iL#Xlg>j=! zj(O!2n@XAk74zyf=%j~Thcrv53mefb%6J%<^^kK!2}{!+Es12^pn5xyR^ZZV6SX}j zB%vup-wYDKpdeNUGiJXYnO}-xtr0Dnl{w6+fDFVDmt$K$gZ)nm_3&(fr%IucN9la z2Cla@6|2No4rteXn7X0u#QxF7cAe9QF4q0S-i23lo#YN&p3S?guI8XvMLg7wW&L8* zsV+H#5!op{x5A%ABiZY#(d}!N8)GH$j4hs2SC{=j%$`240<`N*djyW&;pj{;eW{*_ zx?h0HI3P>iZa*J`;UpPZ;R?tHPH&ug{CttWfQkq)vZuVfY*;JO^qjN@S0ouNolvWp zRaNy^JyHV8Q+UcTWG&SWssz}U?k*c!Fqidts*VrsaaeaiaW8ETdiO=R`^Ua8ZHBm7 zK(6;#<%8A-k+&XA^!?QWxW2PpAwz6k+4ODh`B))qxV!MqD z<+sM7l~0aL9)V<6bnL_@qOo$}4knk%wz|PZ?@~?pQtZJzFbZW1=mrh9sszB^;%D{5 zFEnUc4XL)OM3jf_Qy8h$FNIsGfj8G;ZBVM@!L6rqtX?p-298V;bmyp%{Jk#;z$;F~q-}OYb9ur3SQ(jEqu5p&KX}mq-LAoXHo2)dg{`NOB0%0j z5KGijD$9V3BwG*%){&kug}-tK=AI*O3`5SQ!hm^cQf9=w!RcqdJ7w@n-nc0Eg`15% zWMdAm&b=8VP@uuRs$nr0vH7#ugw4fDP#s2jWCz5=##S1XZmPVJCOfHDGKz}vMIZN> z{0<~f-FDEs6{0M(Bb-$4Xda~t12iCod}YajQttK z=m;VLVz+d;FQ`A-AQF+zGg4>(02|zY)dunY+YO45v4gpb@xQ*>{pWT_>3=Ql``@LC zm>XLeiT~%IdZp@{s?svbXBG5>aZ8uTj6p;vgSf9i$^d3w2&SJN>9+!YF9ac4CN%WU zi3rE*n3u6~bLj?iLmkY>p@&@WWo~Tiil@w`)3*aPZQHghHdbt#6??@-#kOtRw#^DEm85R{-@VUi=j_(@ zzU{v4ep&0|{4nPj&olby{r9xKte-y22MD%-?b*MRMR>t^FRs^@+2OV%#8OI1R%e?? zPQ$VZ+KW%OrA)1vvzr``B$itmFV$TaU5md^W?K$SQBqBdyGHZ5Qz+1($iqpvyO}3!a|>!l0=ztV zxDUJ2rtc;wu7eVsTktey)KFBu?ORiq;htTB5D;HH?60@VjeCNi!;w}U>^HfWcA9*Y z#6HYDSWVdpwifs7$Ih1|#YD6t!f&i~ZZ}oy9M@PHOiI{1iA|ny(J1Qy77gby8E%L$ z89~E>?*y0`B<~Y}M_Ln(&e}JcShuYboXQmZ_%FtZ$rwMbYbwi3k117dWbI4{Rb(uZ zf*Rh!uHnE5&LP&d6gAp`oSWt&W4MaEmByjq6zBu8XCl7dlB7_GYapKdea@J9B!?5PxY5Z=%#< z!C}1gCfqZg3mS8)elBzgrc9VP^b;m-ANYad9Q4S6^eq;6%gIL4rlM|ev~+&SaDz43 zW=}Zxek18>$b>iZb;!}8ZCIDVT2d2HwBllPndlH+i9RQZ1#F>e=?+VEGL|!^pTf?h zCSKT>8*EP!O^p+3dj_0x^cAWrsbtrwGgAa+2A>t@4TWt%5{~+~sW5L9*QjtLLwDbh zk!Gr-#|y*ke^SHD6JM_JCC1Zmw{^~bxM}ZEEBH)Syfm_h2r>WR4*9LGGdB}y1P2fLBUxukGFd( zBwH{V63v_@8@j}_`ERjsER)t{C{|VYIrd7{C3Ccx(gVKLHZriO{P3Fj?uvEt9lg^j zrw}M1L?#*;qN$Cw@73{K3e;aV zLUtTLnd?;<%bV3jK(5P#vZz8h`|%^mDpS4F1jO)p(}_A)tXBRjNCe#>;OM#VZdt9$ zeL;{{CAK_qLK7Qf5zQPMagNb()5X*9CtlI1rZg0f%d3X768B#*7Ha>DJZ?2S^aue# zD&z>jQ_zdcyJ5`>%D869xp(cK;L~fpJS-JFC-`Ze^c1y|o;5t{9ytm_IiW9=v#Q@B= zQjgr)yn->-SFKMqUUxZy8B8PAKh}i3+zDP6joK9+thgt)vC}>bREP)_9ncD)yMB6l zhO7Gu%YxdH0m*qs9it)FtoJ5~3UHmbBtBeH3$Rv9c{Ap`VxkNe%(|lt zo%T?ANgz=-9kj>5@kBlh<{Ff#t~_}MJJFctqa8l8xO6(2cWtE#h=1i2O}|sak+(~^ z>mPI`9t@Y!wAf+3zJADfzY@CvI>0FQt0=U$k2UX1ldAlvswY8%C8WN;amS$Pbm`OfK~U~X^(XA;1Qo>b8j~Dk?j~qb zl40U?1b0z7O43QIMFg<}R~@q_iA0Fp@*HMOiIxu~-d+qj8*TetK~;{c}a;(Ii>j>Ta( z_wL#vcFojbAQ!WtqW9z3tv12R!`hAyLZ^p*KUsBPxr~>#oWx?y%3N&fL<8m%sc~~Y zuA72QUC9By#uAiuuo(x2*VXu8J^ulp_2i(5^HEs*%V~n^akGdL#hl80cEwT|M~cHA zE~0XTBcQ${uZk`s)$h{F{2#+itZFm9n#K&lZQ+TSpHy|A-Xb z6SB-)m@dxg^n?_Zqirv=yiS<r z9=U{-tnl}$vOnqZhe)iSAASzv2R8|-uMEtO?-<&4RfjlzQNoCs^;Tay zq^Rv=d1t4IJG!S2zjJwiWVFYUu>=GtBW`)`=o4k>2wm3nl0%=E;ttWuY`K4K_tSO2 zKfOP9;EBnPk`?(Po%=0m9tjW%r~C}a7^+V>po1)<;xDUT_-6PZ=H~^sQF-&`rg@+I zjb8xo#Ce@oftQeC%4t9z^~7MO)KAc}9=z)ryo;-JkH&-bMfCEGy{pk*+TmAS&-LzW zro$oLXKeK6aBCFl+sx9Nnl|BXXOu@*C#eLOS8T|J*&iIu679VUS0LT{;Cgb?Lk?I2 zVCBSRudd4F3OVV$Bp~P)U!RRj{1Lt}0pW;K>I2OTV_jX%ffbS2Dtxj&<2Uze;dRcq zhPczbD=8Oc_rbK8AHJk-{?FrQZxSezL~r;X8v#2~Y-R8I%3c^tvdEp0NL*`HYWzyZ zhQ#%wYvG_nmaYhvMAvwV0CXlNcW|nER>pmdEhDKnDucn^`;NG+IQXN_NixlTqPx)n zzDFuAJ4I(oL6(Bmy!a!bmnuvq<{$IR2iqvoikx07CF^R#Z9fFuo{9&8n-ZttxD~i8 zUhleO<}7|0{W#pwojUS@mG;m_$2CO{NQg_GIK8V)o_-Y2G@kXV`J@DXegyo}!g=9! zl`j5GD8&3yP+XmtQxFov*4?_z&DGGJx^x0nkjcVL%^NzK zIzC#uKI^}0T2^*i{r&{FC)KSZ25)DsRm(T^fHM7HmzTj}afYqj-v z)-+9dRxK-*$Zu{_*2;`V*xbR&ZyVck3^CXze>RSQGZCnA>R<7S@(`)^v6?cIVe9zpbzj^lUd*i#t?*@1@I>m$nC& z%NoH#m$6llM4&MZ^#~cIa>J?D%EIAl#f>bZAtnV6tRb`llFuihTiWqDr^|p;j(KzC zv~HXO2PPnMz`uNmZm_6^*|o`R##yP+AotC~Sf@K7_g!z|uU@UPppC*L zKWEyHkb#$Kf+Vc3W`gQ@U-V}@*t_sV1PA!%?`bi@Vpd7R2S5tib9=!sbqEMFtX!{Vqs~V*~k=y z2W>+$5MEzGwdhGQY2Dy2sYQfqQZLd&#=&__tkfi##WT<(Bxx}$ET<<2nnois35ycK zOkMMK<=fah&`b9L2&G9MKyP6w1WU2+yi2VfO%zG&Cd$V_ET9-lJ2rf|=kUKMse`Ct zUMS;gbiWeNF?TeW9HaIuB<9f}=D0bAuz-dow^ZKoSXd|siX9GL;)xfa`)Mzi!5}F# zUsE=fkjh#%n-ad$@6FCx_GrwKpUpH(%WkEmu&W4zNic1RlAd4JY_}*wfyTmW&6acY zoq?=`6&^S|qA27(kN}{NXf03})Cp`y%U_)bA&!(DFG>CCt5*Xv_O(xr;dQGT^)fhP z#xs3ENe_TgUkDNRB;&N={&CDi1!EA`P(A?J7B9hMofRgxUr9?fBxpD!(}I(!Vk_AS zC1&(Y66q$6VnTLakII6>2QKHF{O+rA46CyhEQrtz-j7d1YgQe7R#zALy>W<~G;$<; zIF-DPR0)C>67R620t}CfkUoc>j4)VZ@L7efrqHmY->J|$P0j9Dn19DwoQc(2UGbHq zGL5}P2N$bv*pYn=`bE^N4iW1s;LB(+j79hHGpzh%DE#3uYIga)N?^t>lEg@-4A7(# zB*`5<;kgopUD)z;JMLA!NaPVrYG8=XQx>h7Hx7@Y3oD88#3jE{D3oA48MuoI(5o2a zAxmFcStXAg7*aW*&F6Kcav>seA(3a`*_AVE6=0%tp&Z9EjbVs_JqAO zPMQ@*Uxk%Sq&xbx9&Si3UGJr)i5I^T-^@97_OTp(uRK)T8qQaNQxDpJ38KmJ6iksy zs3*Q262QHg(T$fxxopFtVo{*6Qc#LB=>Xdb`|Za69hygmH=DA+-Y+QlSwj`{ERljT zW9{!7A+W(lO>QGU)^uH@PtX@$FE>aAZb9U~Yj;+z8LiP=dr0<5?IX@VE~?4#skJq4 zLB*6H#sH0tKxFYawh5QXQ#*>s6q`wt5r`{Df;{2;gWd&YWRw|W(v4n#1a^w&C;G6+ zjH8|dctxh?EEaV{1I)~iy%@3Tt^NH$2c(xfG^&+;Nb}fL(>0oD*VS|m13se|or;=R zfM}9RAw1achc@+)4m^8FHMf>BC)G#`i=q+C9M_6$=0Nd%I$WB^qNO#*@@e;g8cX2v zD}PVkz86Rp?Wr5YbRY-7Lz3;WOg0M}2V0E_&q~LTzhF9~!!;m3fEJp+SNDx&)~Qkm z3vzlBDJ47ibM}N~vU!DCkMpZI%zDK%bVa@RINSrS{3iWYxxWcG>*9<(cL3`Oy1jVK z#s7FuUA%GTqUADNzW>^eQ@> z>+n8_eDP{l5;aLe)pkRJ0_{)#X zU@sI$ZQq9rCq7D8o4TV>&jQJRhXf55ru*M%Lel1bHq`OUJ$4K#d-4=R9Lt%;$jl&+ z<$8&wG8ttegG*V^xzBvZIHl7S{u2E$KxH#0?6DOUHn!pmrr6j^++OQ z>gCo^aoe0cJ|s3g8lK{Jv8Ni8nOYdGe?U|2<5YEe&UoX-t7Do-6c2f@zJT<4E7lV= zf59`rs+^oDNjNDMY@jJ-qFdBhA9y)Z5>~U)!ciS-M}S984ezQXKXel>(3GM``y`~r7G zMe4>7T2qt6oUy7Rm=jc9BpBrZ-_G<$c5-5Z7SZVKFuhp{g=low7!_>Nv18qt= z(-!-0y0?T9u9st=XL|e1z>U0TfPEz_gk0Din6(}*075RjF1VPauH6y&<$53n*Kl1- zWEYIT3;ylS8;L-rU)b|2kqLEIP0honp{LsRWF@pcm-$_53P@Wn%6&=%I;RoTbScvg zHqA|x)AmKb4H+|lDLhcu^8!q~9*c!PoUkjxpeshOD~jQWU^MHjGz8)^xah84PHuFY zwow?}EGV#Y^iHOOQFvl|P0Wtg)1HaYVs5G*-ZMz?SvhIemjUmJ8=Q zk2_<+8R3z%XP4;r^KU55)tG_|hHcx!?AtZ`VftwGl%%%4M>~@B_e2UC_M^2@xA~}{ zYzSuiY+{UwR)5OZKt^>!w8#JXnjQ8>R9X}e)O+9%(g{_%fBOo(UondMt{T`CwPjG) zDNF4J_c@*O1?<44ivWG} zim*n6qatEgk?+<>YdccAExNxwxMxE~??w{u1{ky@w{;sl{jEEO#7ltiXfZrlsKkf6 z=wpA>-YJ_qml_rYHDjYkdPgqOSiDB_HzAJtZ#dRwrK$0~nB@xhuZ_hxKEtrk;uH)t zSkX}GJbJ9u6#`ieI6|CJ_gBCXx#0$}3ifo>;-sPR^Q6)To%qM2q{1&W*obpMt^&vh z=x!HFfBt1?H?I=wll&`7#}WKbvh+U;$^Y+`;D6jX|4WwsPoY@tFHrJ7{kiJ9ns^fE zpOn4sXsJZ83@yUtn6^oCb&z)Ti7LpJk@0zqGMy_?at$HFrb$Ux&PUsajRB&557UJr z@Xb=7*-xrZw2K@d5=7!?*HzB%=`DwwkDIBh-9MjB03$dvSivyYW&;(xl6mF}YbTq| zE8Y@oji~`per9Ncx=p%u^;IgpE`vQ@Y}m5n(sn^1=5$B11?F-wT4%i>8wCXRn|rK) z7z3WWjDE{DT(D5%T@28z+GcagdB!!hM~6{tH}oAXZ12FEu~TFdzOy}fg>zwD0-O|M zalIU~QF7Qcq9(_zl*et7(WxOy+2l+p!lA2?0B9(K4wGbbpNWqo>X?B~+t zHS5fohBM1lb)3o()_kg;qNJ!CVaMa5=1ZSz0Yk45T@sTQVM(mQk}Bq!gTj7^#Z5n>tgsqaD6C1inK5; z?4%}9xO!zBEra(j7~&woQGVrn zkUgYc(#B!B1V`t@k`RU_azXvfbBTNYgDiA#aMTNhMoX6?{`oqa7SgW73Lf7V-lJp= zxT_spApi0@ub8)ND75HR)f;m{c>WZqjFRdsS7S|$V%|;)%N-~A(hNq!la$v8Dn6<% z0fjz91|C;m382Shb5jKHo^6L31-2IKicCb@BMdo>aq{Ys(xAd#1&W;_4ww$%rUBse z@>gJ@NW0(9=UYGKE5osQ`^p@5Va0bbZqglh;UyhlxhS{9sd-7ZiX7Exyfxbv2R?*B zJ7_mk!e>h0?+P*2-g%KM3P_wNi$A}i$ta{{rmwiRN8((6LE16W5E>f%%FjCxlq=wW zrt}d~Ilh0sOi4�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 literal 0 HcmV?d00001 diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin_0.5.5.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin_0.5.5.jar deleted file mode 100644 index e56f173a437cefc9839785a484d2f533f27630e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135125 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

FDh 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

k);6!U^4u>tQ^x!aCWIsqGV_@OSwJ(y|- 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 IFvWoUAB6+-C;$Ke diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin_0.5.6.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin_0.5.6.jar new file mode 100644 index 0000000000000000000000000000000000000000..5b64e17378709810e144053ca47d641d421fec7c GIT binary patch literal 140647 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

Bs2&5u!rR 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

yib5Uv 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 DE!w5! literal 0 HcmV?d00001 From e6e14521b1ff16b80f54d56345cd3263af43df55 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Sat, 7 Dec 2013 19:25:01 +0900 Subject: [PATCH 07/13] Refactor for before Eclipse 3.7. And add resource to classpath. --- .../build.properties | 3 +- .../org.dbflute.emecha.synchronizer_0.1.0.jar | Bin 11852 -> 12425 bytes .../build.properties | 3 +- .../internal/corext/util/CollectionsUtil.java | 37 ++++++++++++++++++ .../JavaElementHyperlinkDetector.java | 2 +- .../dfassist/jdt/QuickFixProcessor.java | 2 - 6 files changed, 42 insertions(+), 5 deletions(-) create mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java diff --git a/org.dbflute.emecha.synchronizer/build.properties b/org.dbflute.emecha.synchronizer/build.properties index 0530eb6..9f7fe5a 100644 --- a/org.dbflute.emecha.synchronizer/build.properties +++ b/org.dbflute.emecha.synchronizer/build.properties @@ -1,4 +1,5 @@ -source.. = src/main/java/ +source.. = src/main/java/,\ + src/main/resources/ output.. = target/classes/ bin.includes = plugin.xml,\ META-INF/,\ diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.dbflute.emecha.synchronizer_0.1.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.dbflute.emecha.synchronizer_0.1.0.jar index 2b397d94c79ba535177aad2208167770115d6f4c..ba0447628e1bf913b48792e91250346262efc8b8 100644 GIT binary patch delta 925 zcmX>T)0xN{;LXe;!ob17!Ek10|2R3ykOgv&DFf)e{?A(-;lF6w+#|TbDckkq@@{!KIO5Aj@L! zn_66)n4VgU6rKUzj7%a7@MP-@^ESxWptwMQY=y}ed6YorIKj+8jT&^LKw6og`gIWI z09h7_V51atc_#B}@_-%wP)C|+3QX7vEEKCN&2&Tsu5zBTMi* zFzv_e16DYfc@GmDPC(9Fe5^6IunLk z8?ah$Ua`prx@?>6MRYmA=I6@>g7qAh<%d}4su&3tSg5GW3}#$ZnGAOG=5)1kh?0jI z_F%ornkHa6O4AffPtw!}(?>MT!Sp{(J1}jp the type of the array elements + * @return an array of type A containing all of the elements in the given + * collection + * + * @throws NullPointerException if the specified collection or class is null + * + * @see Sun bug 7023484 + */ + public static A[] toArray(Collection collection, Class clazz) { + Object array= Array.newInstance(clazz, collection.size()); + @SuppressWarnings("unchecked") + A[] typedArray= collection.toArray((A[]) array); + return typedArray; + } +} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java index 9aabdb0..ceeab06 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java @@ -34,7 +34,7 @@ import org.eclipse.jdt.core.dom.NodeFinder; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor; -import org.eclipse.jdt.internal.corext.util.CollectionsUtil; +import frend.org.eclipse.jdt.internal.corext.util.CollectionsUtil; import org.eclipse.jdt.ui.SharedASTProvider; import org.eclipse.jdt.ui.actions.SelectionDispatchAction; import org.eclipse.jdt.internal.ui.search.BreakContinueTargetFinder; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java index 82263df..59ec59e 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/jdt/QuickFixProcessor.java @@ -38,7 +38,6 @@ import org.eclipse.jdt.ui.text.java.IJavaCompletionProposal; import org.eclipse.jdt.ui.text.java.IProblemLocation; import org.eclipse.jdt.ui.text.java.IQuickFixProcessor; -import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.DfAssistPlugin; import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.jdt.derived.DerivedFieldInfo; import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.jdt.derived.DerivedFieldPropertyProposal; import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.jdt.derived.DerivedType; @@ -124,7 +123,6 @@ protected Collection getDerivedFieldProposal(IInvocatio case ASTNode.QUALIFIED_NAME: DerivedFieldInfo fieldInfo = createDerivedFieldInfo(context, problem, (Name)selectedNode); ASTNode parent = selectedNode.getParent(); -// DfAssistPlugin.log("Problem:" + problem.getProblemId() + ", selectNode:" + selectedNode.getClass() + ", Parent-NodeType:" + parent.getNodeType() + ", Parent-Class:" + parent.getClass()); if (parent instanceof MethodInvocation) { MethodInvocation parentMethod = (MethodInvocation)parent; String methodName = parentMethod.getName().getFullyQualifiedName(); From e02677581bbbe84968a49b324c933e86109f16a6 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Sat, 7 Dec 2013 19:26:33 +0900 Subject: [PATCH 08/13] Consider the number in the file name. --- ...emecha.eclipse.plugin.dfassist_0.0.3.0.jar | Bin 44972 -> 45970 bytes ...te.emecha.eclipse.plugin.emsql_0.0.2.0.jar | Bin 65324 -> 0 bytes ...te.emecha.eclipse.plugin.emsql_0.0.3.0.jar | Bin 0 -> 65366 bytes .../action/AbstractOpenActionBase.java | 10 ++-------- .../META-INF/MANIFEST.MF | 2 +- .../emsql/wizard/NewOutSideSqlWizardPage.java | 2 +- 6 files changed, 4 insertions(+), 10 deletions(-) delete mode 100644 org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.emsql_0.0.2.0.jar create mode 100644 org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.emsql_0.0.3.0.jar diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar index b952d59f40c570d136dda36ecffcb87a1f4bacd3..a8efd31660950ac74c95736033c64126ae9a991a 100644 GIT binary patch delta 13656 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 LB@T4{gT4O;mzmb| delta 13033 zcmb7q1yqz<_deYrEiK*MtsvdfEe+BQ5+mI?bccX+4BZWqN=ZwXbO=iLAN;QOg5U4n z`~S{bv(~%jeV)DddCqxf_I}Tf+kz_n3wHUW`zLjReVx9M^uU^Od zuhp_>d<(aGO>uIPozpkQxYoNX0mptC*C^|(gr)G^(gfSo-=<=w$r@fJYqucf)OSjs zaUA90V)`EUI6ZZ!0JMzXatJ<(N#!uc!s(^G#vXN#p;x4Z?!T0AqBNHe4+=lC)Jm9z zIxtg~m^--cD3_|e+>LXr9LqFTuCiC271<ly zgh!yf6C6zXIsT3bvPeybQH4h+XXxt>gMolJ!@BRq(AnX^y4`tERFRbaxo-dQa%cU& zoq&nJQb=C8CYd>! z+M2NZlLs&hcnwKN`fnIYD2ji@s6x^FD<%Yr^hKhlgSU}Vyh}5Qn(dr8PNh-FDX1t_ z{38qJTrLE~ju&6O)(>SLT?pw-uXMYqPSVEO0-T>qJ^AeT#Z%h(=?_-p_9l3B2aaaL zWL}fz4g%~E>}y@^i;~whPTte1FD%UbS}KJ&I@b$ZwbYX+l-`T7Hb;ID5IaH}ck1cV zeeQIDEPqNX7S8?{OPcGw^~5o8#K{`7^Q(qtfXuLAL6m1@2I{-w@--7?q8U!SRZr)j zgdG5Z*S2U$P=7*T<4R!lPFekxdG*ct z9IYY0prb5~xY=g@W3 zUmB*WpCz6-Yo~ZaY&xla3vt`;Uvq!ajRgfz37XRBS2XodJ`HZBFjm#?*f=?kD8&~6 zMv6uu#Wd4z)5FuGxWGmc&c&rirE91JY#sXr8L)3{H8k|qRoX~c5o(;Faj~pYHMJLU z*Q}O)hx0XdT)cp&F5118cB!QSHG7a$Y`f!BD7*1J=c%^*+?2KW^~mUZx<<<$w!k&O z^<;fVou8?Z6T{8;N&TKhZiY)!Yj;@Db4LPnm2U=XsHhcK1^(lcpvteq`t6-|JB+#c zREG7)j3hmB(h?k$rt?M4O3HpqhFPb+sO0G+4YhLVw)&A)izGYuwT*#6QdyBSw zb^r2&Y@JP{fP6S?<#C1tM>;CCPzEumDq( z$*EBTRk!Kt4b&lACW9)Om(!1uKA839@@=#;Z2a)9WR@H+-eIQDeZ7{&e;WvB7PE>* zFF@Py*UxGnW449i$cUSD%XB_o?)H34K}yPQ8>o~&>c~i49myzQjt&`h%S)s`4iV!OBNc$_wn zWBFqj&O1ZP7^z!cp?oOw0N>ni88?AU}&;+QWr3(5<*?UcbScb$a! zL}}36cTNx&{B3q;n}$y`+!R@!g>Wp!};SdZ5Py$`-s&2xpP1sz~C9yx%Q z5mfK&$b&W}#`<{x@MvPvOpRv{wip?u!W=IO?Nw0Sn9zKrF|1#p<1r$0ScGWaJ3=Sv zeGV^E*k)FdZJujSW$Vl4D$Nd@6^`p>`$61@;yqEZq6RhFM5J#k+;Uts#d^FpEY$9# z9mQ&yS5;;SD?BF`FH?{9dhh{}8RZe6Q`W+n4|NoCfr(7K*1E^8rLDIT5gga^7%HB+ zJ^tU-RS8qE6_Llao%6c=v-K^v1srUZcxs44q8OHZYl8srMnP@R4q~6noLfl=H5^*8 z(){v-rl@q3l`SI_z8G(tQh_e>FK{iE%8p*69FoZGc8Mn?g;ZnuI7|S7#|ZM8?NhAI zx5w3*?R!bA53DgWS}Me6Xqh{ybQvxCa-+hx0UR4tY2J_xQx~3_>Ey9 zMrtqZdOg+*DOy(x1ln`r<`KxUq8Gk|+-;bD^O{i%OF^6?(U_Q^3WI^xfvSAvpjI<5 zt%~4c4P~!4#U0vwg()2nS&xCM&xuTo!3L+yhE|aL2A2)r#)x44t79ovKRLCZ1)llQ zVo<>L)8I-&6%|R{koc|@ZagbXqQNOVT9tQGE&*PyA6wZiFuY8 zdhBX7{g`^>AU8w5UDAIh*cFE`=>CLHD?hnGcu9@1D7W7hm^R=5$e``5S6glo&*b62 z)Qqd_)ce?%(GVElJ1HEXvorM32+hoh!8Cr^mB(@X^J1qvh9i=E@FLw#C1H2vRrwRq zOS}z(QXZIoWz%J^)XGp%<|iQJ_g`~MV~BvRfr_^w8D{C(x$Nk2rRn9Y{6eT71%x!U zoAQd0FKn$&tX05M;2NMutFZuSyT_neS>~Qb<_D;;`3sE+9<^$ zRYUyYAww^zl8o+<9aq~>!H|1Ns-gSP3BL8>Ohz!ZWe&2ii>ZlF;&6UtFSGI(?CCd( zYt16vAo>_h>zY})VVz9Ab%BCf!F*v! zxi|hIKHH7tuy4X+#@}3kL!VdIbjPOVP~nvuURitEGZz-6K9-XZUsV!hq3*n7xl5yqD&DRkp+Z1>eR4k&{XH8L z`7;{?mg6@P!Xq$mGv@n%zf1&w{z_o)(m_ZV9PR%lwL%74uyZtLaWXY@GIadcY*P+~ z@?Wz%Zy1Ju#ni(5dzN?(!~d^#1YyPgr%X};cnr%0Bq_!Qkq|FJgOyC>7u1@EhJZLl z_+7~eSebuJ?;kD_5Q9t);NgWmMf{`9#LXOp&k93ciX@7Z8eolEQ{a+kAtj|J--RIs zgPpvmzzvb;T*oRWLCV^y7G8UP?yBvu`D+AO~+U9WtA!yBd1kB-a+Qjd@0R&fY}!)-!j}!qq4rHWqB!e7Zz+nEfXKyb_#H! zTxZO<&CKP6me__rJ^^G~PdN@Jz$QEONfHLXm#v>mP5H3Tm1>EczQjL0P+rrRr=!^W znhJ8qdkdegTc1oxS8b7Q*;1ze93qTOwijg>o4066YG;48&2~|@!i8o>$-|1jfJ%UC zBBtGmMaZ?n5V6$eMr2J9dFbSl>zp0tweE6UaZye(_KslNR0aUa56XoGHxUydy;#&Y z3j!^;&_p$TEIHFP*H$yYCMaLP1Ek{CJ?)iy8yRiwQpkDYLND_uri6-KCWoC^vQV-r zCBI6xAg8Pegng=%XGHfZ1v~zOQF3A{{rlwtT1y2rmoGE)mP$%AmG(7znsbxg1-AJh zGdUV;CW#j;;s}5tRmOg;8iiD|0;>9slz2XTr>IJ@H=pwKJNckaqfaSpn;G#Y%Bh)E zTOjRBI*bYqR5yFoCNKdl7#>B+bgsz-*cj=BZy@zJsj9+GJ71sf+zk5+(Y46O{Sd{8 z91SvjPk_K`Ay1!L6-FhgX~I?d(MX^sV5$84<8>r3jU@+QlN_{@x7Mf1^CA?k=({{U zvuM0;{_c5WJbwOlMDejTmQ>SoafUfv8eM65>BKgMLLUMJ>==e)?J^_OX{1Zf2vx6} z1C;!8oXX;kv||Dg-Td}MMl#L2rB|{bx`GizW0t9pA!zt#=TL=ma#W%GYR>NmzN1>@ z$Bqv#o@__}aMCKZo)W`7|2`O2mMUeQ84||QuMVp-^SSVeS`{imvr{T!FS7>19-`i1 zd}nx3h`(8aG~x>*&RTlr3s{057uQb9KqO37>@y@?_tkz0C&fIF=30wJ6|sP(?0aX? zmrL86nxCx-+}?`~?wosDGhlIta%XzKSG!>oqVUZ01Dquv^fEJCnZ-kF6uskEY}LyQ zTbmm0Z4$@P9L6LG52O-;RzJrgOMAB0#M5OXN z@nsGTY;=GX>V@28Gf@#HI2^mqvgfLqezPWyk!Bo$49LYp8hDoPwpg`q%zEH4TB_9 zS|}mrtsq059y2*@Q6uCnk7M2Nep50Cf zVZC#!@p}4-kJ8>zttQ4o`s5i7X_pGN`ECm37Pa)kr0Sa)zQVYsGzK4FcB5>xE)t`V zF9HT2sG$>X&qep8y!c{g(OTHsQY|g?vEs|*;V1YQ-xN~6x13$CO-iK`T?iMgs+@?^ zeF1W9bgc9vLz&wZ6*nz=xuq`xM|${}_Ss$}+Rk}uW;T^+*iDOS==-SMOiiT`ilwbL zQNK}K<3Q3kqULWix1o5yD!qNfs5L(=U$;F5Sass0OFS6jy&>m3Mq$frenx-U62`I| z9{;g$wn{(aak`K;+#$SKu#b46Sf&2c7imM!r49NtaJ=&06!Br=7y!3i6e6kc+j3UZ z*wS@j z17sC2E`~Bsuy90r$6(CTUK_kFJdoQYZUV9 zOp1%P0KsQ8D&*1xP>dJk;s{?;*a9TdHF+vth*ur4%CEO@3l`awq>AoNcFuAxv1&9q z%`)N$uV@6Yn_&uP%HU9)pu>tBHZkpJPCF)6_YM$xD|>yKfy{l>wWp5{UnKowMhY+> z-CelVB4Wcn6sj7$_AYIp5cd`@S7AEO9Aj(6$fxD{>%fpm2hHK9QDD85@P?WvoY~10 z~GK9{Z=sJa6!8#|-s7 z<+l+O@MBdEl%8A2K~rS}YiX`Xl{o5YFZzM;Ur+%=sSW=s zvx`pb9j-;5Qx4>U?3U<$4p{&!d1m$&?P!#{{}Nd`1F!bk&=jm=LU9oyY^y&&lP@GO zq=K3=B%DI#1K}Ag4qJdLI{9t(kH=;(H)5JJM-YO+8;<_#84MapFMOmc1A3BhR-WK0 zr2`%*zC7h&;^Sgs$%hy^s~?+Go$j zrteSHbEqB+P z<8Q6kd!18qv)*qPWtl~4ho-oWJOxj_kF|i;vKhEMg3?UbhqlYG((IcL5Nl9>iNG^h zF%L5*-lHNAP>*OGahX-75%$F!zDjVr;wS^>ILHM1VuKd`xC3G{!UyY^sAqxDE4ND{ zNAP-Xh#hShqK|Cb15)3C7W)ikRWH-V-(A%xxZao2mQ=b@hFwkgUK$*j)LQ*-Gm zS@EKpVWI!lK_qda3_;d{3S>j<jfc@D;S6|_28zA^_Vgo^8L+}FH@%4H;%KCK<(9$n~%FsO)6I)m(kw4Nm<(z^9 zLhRB36skaqG(w{osYK=Fc>J3>F?pR6+{cW@Lt< zgGYdmRqkX2zcr5ppCmjedLB^Ke^EhJELu?D3_l4aIhP+yOaGk)T!WSUpNfaOsDwZS z?D_Cuv#`2dPJ!?c5U()rM>7d7!Jfj40iTq?{G(|w?m^V@Kcfb-fJLQvfL={xFO@0$ zA6bI0=g(fyv*5i&dR)a4vI;GaQI;>oiCvjrn{6azJO47ZX8{HYD>!VsKp~hPa?8rr zSY@kt^eG+t3=xV8dY0$*QqxFlM%w&B!Bv*09p+rnR#Vo^&A8K8fR929w}5U|K)EES(Sl%sMi~zfhuFP9U!yrgY$6 zmA4c!p>(?nuEexB<*fgvL$JwgQzRntVVkVAKVZA+$!oa~lJFAnCE&g2nNk={DHR1n zO{IAqUtOt;1ymiCk8f^DtR^LwY=^$q6#cSANH7=P-s7BH7-rvCUnw~&88?=RIHpch z<+w zG-JhDDB0>fH{HEf3kQVKj!60f(SZ`#l(7*iNwxsZrytl&Gqhj5xgHVQKtIbAsq-s{ zZ6;i0Yt*k_e}s)J7Yi9)TE43UgLl#%Kr*%N6GyZ9npNhkye~5*ku`=s`3b8jKsadd zy)z@u&UDM9^pK6ZeM<)$+@Ui)=J_b8B9ZZeA5SUe*h#q!N$n~H2=F6Idxqiz9JQSyknZb@_n9>sMJ--fo`q3T~NGe0Pw5MaS0$-(W2nHx@LL~Fd zD}1*qURsqy=ksyO)Kt=``Ac73N&-tj-5*NJB3vcN!5%i zH7l{`Axfpi;UQvD(rSGBMhLl-E}4OK?OnGfVhS8C?|F!K7j~4ktn)6NWU6PWi(aQD zZ*gE5PgAK6G;hp*P%)s7d&1r%XzR^&N zkM_cZiGwJue)~^Ybf$$iwI&}ALPHyTpm&02BIfFPVX>|H!C}Cu`_V-4Hq_b&@!H)q z9p(%8oSr= z=tgM)n)M}0M|2+aCEBY=GK)E@3MrT}g7{HAe#)>}xSE1qolk~h6XnVV6RGgHjX-|# zrBL034)h0|=I=CVGnaiSYTB6ybKjEQK5|=OUZ7EIyg)7$7=$5_;8iQDo4m=@wzmG4E7seCNIXQ;Y!Vu5L# z-1{P^R=&;{S#4DvaYKjxt2AvMV*YFxS&<&@p%Z;(QbaV_TH?#N=4w0Gu%t~}nqFBa znrkey97vuaxQ`}YnzO#O;}Ku<-0>^u-2tW@Zsb_+!VcHq&nT?)2T75wgsN)?WE%`H zZ=`yy+%rBF7bflW`4pA4ze#yaN-Wlt_xwl&N2Ggf5G@+ov&-B@(ub}@~?T^ zF^kXeFpHNp1U-mjB3E+1$F#UMA5r_{tukFFUbvH6?nxiL%I6qHcd#C?qs;!i7L5eB zwXZZ5^Jxwfd2cM{K)+;-KU!`TiV4?iV4}j5xOi4Ue;eeMQpVu-v8G@sul!uz%-!)_ z0Q+suYSxUx&UqQ$z_)hQYn{;y)KfgJ+JS@%HLoWcgAob&pqmk<+XA?6G6-rjD61al zNdt{yI0{Y&c5zPPIK6!>9v=n88({hXTi%n{b_&5wD5RX!z>~Gy6244@pc+05k5D3> zb%q5_>2T?qm<$n`=Z&%iNN;Mi5luuB95**;dHGA~MZMF}x#N!ku~odp6yFTEc(RH5 z?M#BBRrOOtI6H4Ey7}yf zx>345ek(WO%TD3??)~jBzX=Lwj|v1(;adsbfqefqin>f zWOP#8Yz*X&UA05s4CuY85CsY=73Ppp16>>uls;B12t*U@t=ER=;wnu^bIyvUc1yQS zt$&oG`DPJ^d!Y0|X4iplu#RYh>aFuYg_+kU+Xllb-%F2jem=NYs8++pGk}N}Lnf_! z6Kct}WlZbpmKAd-iDxU0saD8)wvtQqKvdNEkS~}rR^}bLGD!wOAbZ$Gn4$_Z%~fYC zu~AIlbSkKzAZ|wsPQMO??skmE; zF~v2zHzF&!<5>K*U?6LLHoAGvYGLplkiEf^;b6ZTn$y$g+cW0*x>W#~lXv)Ij+m|# z&jf=XP@jllr`z4%oCl-JvU8)qrR~`{a_;c+#r^?ZK#rd^>g8q2U7GsRS+93Smfgx3 zw}Mkc<0bd&BJzxtHNc_U+a?*CYhH2Y(RQ z_6an=9_2aJL3}+CW{* z61flbSI@ku;OiF#7Tz%pVbtux7S)@^CDpC1p%miJh`h z4D6SNBp0+N5RnDhS!0SIx&4KTJP*gmLU1IV7ZgXvsq+#|-h8ta_VtYZHqa(N0*shu zgSNGBE;`k$Dh8JE92*U$s}?mI5h;qx$ZP5~%3Hvf8(nDt{A+&y&*x!+3p?z^mBIEG zmNaXJa<^Py{H?BXe zfNvUgV)U)H`^7Qc8a9-L;`07iA^WpBn{ELCw+7~7A1Hu1j_RhJZ(bzuf|qVo;kH}a zBbE#6><65rj;qmDPfA85tzBhZtw?CSCw}(E*$Iqt*V{}#`lu;YBe;Ihy9Mj0Nb7QB zKK%%)hV-=$D$x-XWR&h{NZ{oIK}^|GEx1bG9d@`NK7Gs zo2NVoTM8$@rzH^&nzzZJAps5}n)tUc9uz-{KV7hv6N3hHxnRJx zRnfwS9S(50h7WED`>WEstF6AkN&VxY%)>CihcdiC)(TjVl3_F)I2`q~kCJxa)~Xfo ziQ5Ca55oCR@yS|24N|eNhXK>x8*FFWg2PDw*R6j~Q~A#_ZRt8yb=R;()J0!8Cho7jsKnW_KIw z`@CQ6j!=L<2oL?qf_3<_`|9S=-f{1aeE&1L z;J{6h)JT8m0q%bUt`y>f_eDCevJekAhk*9-zOi5ZjKA~(d%ibv!9NL>#&)(&4+6O3 z-0yhAy~lunm_Y#g5)?h#QSR>-Vta2VEoaD@V7+p^A2(M`D<GD_zex9AxoSQjoiTw)2KOVn|DIL-0k(h@j1>Xe zvET#SOa4~#d%e^r9xhkmd%WyxPQF-9U*&dAN2ewo^xsSh}!#tGO-0i1*!AipW z_&bxoWPZ4O%z@y^b7I+AKm32WQ^&CKZbI=t0l*Sp%zsqp;j^+E3|y&t_^jN?c|V`g zcrZ#a@cN>61#s~fc@PkmWVSoOavO%!@JWpWE IxO4jd00V`&F-|M~fEGM~@yc6{JBxp@IJ67Yafn_>VvTdO!hz0?CT12+~T*iP3+K0RbueYbhj9 z$e*RX8@vIa-++MNfPsKe|7`iMrLux@l47FDDs-}9Ns5AYfeeTp#J3RqxfPH~^eVg! z$SGwiig8}<6J)DnE4_N+h1JzisH6`I35RK`tG6x5fX5TgH-Y2PbR`=C`GjKwttd_2 zdKgWbg^Y_DRMn_6iv8IKue|iUbxm2Tcnx=;m^o>POS@_iVgq)$Z&b46F%EOP0%ZAJ z%Lv(XBB_C5(QkOGU^+f2sGJ81I)gq+GUlU8AMW2LdIukYi$=L0{c+3^ZcU!JF;A{u z%PNE&dKp|>i1K$w@|t@oAJ{L<$5UqccgFY-BV`+IUlu`4tM9xmG`Q#nW$B$ynqGy_ zIM`Ium^rPvSQKBCSX7(*-(0m7n{j_wQUpg2S;mv`|EJgf?+yn2<28FHbNc`H6)^u= z;cRN?Z0PhC3sL@kp^1^1jjN04Uu?ksf8JnfYiev^_!s+#{&JtGv5lpJ^IyG}^8eF* z2OC#&OS``~2HoE=V{GsAS4U$0+qPU?EN%YcaP)u2psB61<6jwL`}@WWja@A5|H^y+ z4VxyGhBo$p6{_5S|C|m^re>y2rgp}r&VS)ef&YJoEo~kC%Do(a-@1$GACrcEnO*-4 z2fJH(89JH#mmeVi0muG>{3Z>5@U;gV2-96^|h`tUF zi};5gY*4wvmW93}tDD*Px>MN)%h&eX-)QnGhpTZp^%Yg}7=9rY&GdMgY`QMvbuPSKhdQd683=ed<&ilb1#7B1wL053A!;a}Eek zSW2@jHeB9x!uwABh#+pJ*Rj6L5or_>f9@ zspi^+ITAla+8#ho&)$&$&3uHaD$>K4>r{BVj~nVTAeWfKAi4LF$H?ab5C)=S4b2P&&;IkBjQCjKTLj`5O((EPc1rReW(7*0nv&E`@ z^$$=QB4kwsX_Wu?pIFC#5EKDWihd~&ARrt_ARyttle_;TBa~eXU0j|2M^Y62XHqmo z*#>U>azYcFRVqd5$VC?vU7*T`FDc+FG^CtmF=Q)^?gsGp1a|#AiL9P_F2I?#lWNrf zB}DL+V>|ZQZa&VOtlr-C1H$YzhC>2qXH#JDvHL1x!VHQQBRd49v^JVxZ#Z3;=6oNQ zD>P{b975Tt0IxG10W+68(~m47np*go`!T=`yGRes?{V9K!QMKqHwHoh024FPfRn`L zo&*a4A#qqoKoQpZVSSQQT!d%+i34B>Ynmx5rKsl6+m#ucW|go1U?NWBNHT`B1q(4h zLs26`lS)TrqleCUKP_Mc1DaVIA{{2^GWl-Z?IeXI0fD$nO zCVHMax`6Iz8(~_+KRT)dzcnrlY&P?@IOB045idu8Wys;}} zA(b*5z5W}UD{`fS$co)F8@2N(xF3U)v|yD~cQmH3$U~fe9H$Zohh#<7hU)I&Hj0@S z`B(-$%By$ir*|laxaeR9p{mig!S*Zy$EO%5PcajEM-ms*tqQ@XhVS=)c!T1)Q}BCt z82%f7*t+Vo_=BjJs|mY9NR!$Os#h)A0Jd5|c{@0<{3nN8{3doYJWr2s9V{5y#|grJ z64`%VUeKzkGLjHLKpIFuKw|&BR8_ZkvNrld5G?+uY*jy3{=SUMs}6}C_8X*lXo$WB zg^b%}5iMB7WO%T4beG0xN1?^n8?zpuMLKzfv)0|7sKBBC=GdBz`PmL=$` z52QrLYnCchmRKrOrszD96-Sbo+_oe*t4tHa-KI30HrSIZeW<*n?6CuY-_$2v=SR|B zA{|XV7p2g^+VpDf-EKPs#7!&|2{?9tRWfiP&dr9=`TI(8+fODhCDXe1>P%?@L&VFC zP0*%S(QZ>G^cpQaf(|8o(N8fJJyhV->P{3NSGbN(K*5TtY*a#yEjIEL9~99{OH8N& zjD;f%ANCmGAV6Qwd8L{hS z>?1R>v(g*Kv{7j&zvFr{QaE^~G&By9B+VvNn<8=4w~qklIYsRia3fB5aez_lj~g@r z>yKevvPLu}B4e*3^^-5+32z>W* ziR?jKQKo%YW$wq#+$dd}3xdqp+y1H5UcYFfOOFt~Fl^_6Y2PFazpN$&5@R)~x!OQ2<|kR7h- zY74b10^_@wR0}bmIvaa1+e8eBOHWKV-Av6@wWkdnlJ0HTM;LMzt&n`rh3+7`Q)?!z z2P`iFu)7E-p+nXkW3&?B%36z(X1|{_uhgk(ZS8Q1gD^=4&(4z>GWptCaKx>)@M!c8 zB0Fc$8?FPd&s#meB(trKWwt+;Ae>}!wwu#pT!hD-{*7*TQKqdCmtrNxw6LUu+p4!j zIjxah-0)!Xt4jPRqAF`Tl6887T44tcS2MP7q{;`GNps~oSJPQ`^Hx@@;xj#E_J%BO zAy8kJ(G#K2HX-W@3#}pHOqHm$H19bH0fAo!^4voj#G9(kw|)HJS~@wSd$Ud6*aX$@Cud zP?0t_t~_`hOoiMUJ;3c*ii=j?jMC=3Jm{U8f?ilBfAZ`FC+W_KVJH zAA}eQKgam2g>Ns_A;f;E_v-r@y~R8A%&$P3InIazsolC(PN73TufE^3hD;-N!#=5I z9$Vt>IB%0Zk{8s{&yv@K883Wje!>O|aw=CRH(`%vKUyDU>G z$nQz1ra^Hl{Iis7Y_|s!HP~=J!b*Bf~+yHcxA>NWf)!w zKXV399kUG&q&>noh3@z&E)0_7Tc=S5_;6Jn3ZT8`wvi>M_*m2SS%TYF0fH1c$3LiPxblB-Y6=82dIwH%lgf*g;QC zaAZN-=qzLViR41oNqB?x$TLuRp5bx%twQSxB=XzF!8NVjld9dJn(7ZhqTA;0dz~ig zd-?`Gl2zzYu69O^MeQ}|dPinTu3GaofR3^P@DSp>fJ3U@t2rfLOrKET+Ezs*ZuEEV zj&s}}f|gzT-?p-&e)zj5^Vt(v2XA4$nx&ZrJF|^ysA?AYbyzL+N~v+a!gq~RF!i;2 z$bUA{Agn{jzm;|M{FI;?n)%whF#sM&VHxug8b|GGu`l0UaKcxu!jyK zR<+C4)BqY{c*>D)Rru<$+?dAI0XQZ>a*Mvm@6)%6U_JrVb$6Wzx3y)bAn#0AZ@}HJ z%7H3;J6rq}2~zZaQQH)kuE<;Vi-a%Shxcz^{|m1k=U%JX_)}^A`n#3pKlKYyS!G8X zg@33v|Ex3%6LsZL1W^Io{&R(e0qBB={6JvRak@yieaQI%sbq_YipbRyH8SISZtiJW zRQ%&HFp*@RKtB?1CoYU$!t*ySCNepXJ*PRjnfd+vKHv?|pJ-hecpy#t!@y!%UD(*q z{G_48S%TXKad%(!P+`dLwBhIptULC(<+CdTgI_n&yRx4P~NqBJD0%G4JJ zQV5&1yni>mzRS9%DlYs9|3~M$(`x!pnDaYv541Y-)gXs(d zQL+bVp}TI~LDg!cb7^Blh?KK=3e!ZaBMk>Py>m9|Sb-v66@)%Gj z8)>i&-S-6N36**LO zhxf{dy$tg(IS&a-D4a?(2_1&=3KwvCE{Ye(GCgw^FIX8XDtlYOFhfZOzJRaJ-iRObsN3rT}I60cA`&OPm9{>Lxt-`_27*=1FK-9ZuK`_0!4 zahX%3#}Rjju^1)Ocr8=8rF0wISECtE$yJ7R$Lj!wt86LT|u5>~iQy3ir zrYm6lUT*pi5oKOut}wFXxJmtL-#T6!Y-w|>895RW*_agW)sfhG0KH7hB)Aj&t= zXaXTF7F_WX?ca-4$PF%J94w~`t`BqHSQkxCPmX5_i7WO^sj6eYCoTy_*EEQ^;H02& z;Z0cMAX&zoc?9-0R|GKQC|VwHZT;E_$b_=QKirwy$}`TKB7satI_2n}CB)6*DhkaC zCtjG4SY{C~c5yvTP2jWw{MyG6#}K+ZwTU*U9*z3V;vQxR;_Fm zBQ;;e5UHwYs!zr^1T#$eb%pi2cpb|h-*xm{72wfcs*@!cLJYuV*|~C(-1?@vXY3cY zE0mFV;C7mVqkC+z2aY84z>H%lEU~_fFw#f#jLOdH(^N|=JKRWxld}(FRaRp=JF$G` zGF-T3Am7L+I|{bEkUB{(xn}3Q(WeeOybKbV6ub}HNNl<k}=1$-VG@ZUXtVY8toc+k&FQ&pmhK1YP5!&I6KlS-n*_pAuIbLKHe=J5Ojdo zn&mPk=k=J!-6T%O#v20p<#|CijrUWxcpijgKc=TnEM|Mf8~^QUFINcxEV5sUw`{>= zMuM_YzI0efOsf<`%2$+GPxTC{Fnb|tIf?7nf^uyvW5okfVNSH=Q0g3c;-{JnJ6V#S z+9`8w4P*Jki^c(a-Lp1_g&7Df4r_fc`s;*EN$@x3@nwjafbRQ$6Gpde1eQDZ=bQ87bM;f-oSZUnxd=SPH)805RE(ITQ*}}?;p?C z*Ey)}rmy&9Zi3x(M(+5x>+%<7q1%>wPsnYjdn>`;2hN`c&h%GeepqDW%p4biKxnYL zmI{dB>@A`{vBJDs?QOj|6nUN6cCW=-^bQ}HA3V} z-Q`_flr2q6|Bw{*f9ULj|7el?6KpG0t(Cv4V*0@c(a=N`A_<~WDEO0rB{x~wDxC%k zeaA+&lB#KJtY5{650qxxgyHx^@e?y&2$)^eZgCPfoCrVOvy?w=vFP$b`x2-oOji@^gjgY z&O7_iUweZo9tC486+MqSj5P7kAAt!$q`j z?4kAV!=5>(9PGp!60VnZb(*H?Y@_+aa93qhdPLiMb@h)26GyNJKLARg?Bnv7vniNF zk}sIlXT$j5condwOhu!P-?Nb2@vulEh=%H#EHy;?k?uGB9_&@+L9M z6qN>vh8?T{mfSk-E!J<*qm%>TH6HY04ubt0WF-a%9-Fm=to^VrJd+$MGUY9ylwdiG zkzKt-7pyXBP|L_r*hP%OqO7=hF2hzGv`_W{7G9GQ&Ej005e;4Nvsn_(FQm8 z!RM`l_PlYAZGhmNV268GIo}__gw8|Jt1xZ*y0`^%KOakdwuOt7ubl&|Jl10srpvKwj+ z5xZ*Zlu%69-hFc!aqK6O{kSxY4{h1I9#IFG41$Ji%y5M+MDtOmV-t7jk!;N!VxyNs zynrql+vOS&&kj3}MNg=tx|VPVCW*x@?foiil@^6$4*7W%|R1c z^T#A^w+iW%4!DIee)d`*ZPxJ2{2fx7-E^cCkxsg8BO-|{DMjB(ScH$>5fVy64)^J@ zXg7Ro(P=qV&Z)BSSLcIElAM^i`W;$B3W>`O$gBD(s2EZ&=2YA-*2I~Zdlx11o&K3# z{sV=)d(As@SRA8RL)%CC$cz20iyX|+NnE2yLNu&s90R6B)(zKCj($F5rSz1!;BCj3 zTWTFy(U1a&XPveeG)hW(yROL1s7jojPiq5pNN5I8pkk;oSa2lrP^dP^JubRgf+?a9 zPM$su10f@qw#9k1gUYw@6E< ztjOq*HV^!$eVlI46s98HnmE29-WchzUvH1~K&=3==rtYRrVwN^8rcVEarB3DP|EQoo0e0;Q;RdRx zh)4(Gy*mQ~fwiE4Nn}Z7B5-6|MeEC^1}l~A+7J4>L-;*|3A2H-<$sE($tDua@3#gU z{oeLl9WPr?lNleM`}Y_??zIO-0s_ z&y{hql`<#eDTd^CCCK1mbKgW`<}cox?jDomzY98ZLqCm3yRmc@l$6N|#leUh%rYLqCFkxav38q+zUW+U*iUkZa^Fp}LL3ATdpT0CE{+g!iT#FFITL zfXbK+*fQg!1zTIMB48SWF))M1RU zmgNgl*48Y{$3_}Du13ApJQO?3WnjR2)lf8y%|$@`NHm?k3MjdCtl=>+FS?g~TGp3; zI;OYZ2EiO=g`*5O^rD?l>BGog&Gfbi@n<>Ax0!%ZX0s{3l&-f8p&d6Y|5{f zHh_s)Tu`DZkga!xsG;^U8eQp`{UL>ZY+~fSWgcquf(f;0q?4MEZ4^xqMPbrmM%SOvCoC;$^nb79jRs854RUm!f2}8j7Qn?lU5SJ_~d==xx zt|FJEcLBCmtRsp;RE6^m%G2*NQbBly0uPMjU?v`&2xVrDFBi*9Lo!_o%mOuu8>TBf zAjs3Gu+8N_@kpL8`?R5)G!tAYFs6S*Vgs9AV;W1F(Z7h@^BsD&-a~xl8p+KQz}!mR z7h(>*uh2EWX*j0Rf$!(Y-6w!Ys-wjsG3(nkA}1`wUyQ_82d+3$5YZG4W4Oa`z(tEh zcEYh_YPhsSnm~cZ6|P*AF)Rx&%IhCM>YEBlo|n-Z{Y9=7F$c9^O(=u*b#VM9u#I}U z6OG0rMe)JPH>|wd5{<$kIm6NYeS*oVCLJ(eVJS&mxyy(K8 zl(hXNjCQp*cB7@E6`!zR1Z_f%MI7~rsv zKLymcwJrC}54M8ltIY$wI8ISGLO$c!QEP^~CAGJ96iC-V%tNp`L(0 zNK9_bx-{4p61O~X`6l9{^GV{_Yf#^JK2wiQotMyEQdBB@1|HV7aHKvecoe(n=t?7+ zVEL0Vn&K2J)~+Bwv8d`j%;i^6o9+y~=m6XSu*^Qf%$TKAE&oB_F&eGl=>p6iOk&v2 z^hoSsQJk2QWMiUp7kcL1dKu+mf-;WbE%0alL(a*!2*tA$%tG*7sy;NG;7_!F&v5(z z-zyZbKjPh=c`?QRy*JfA@1jOEYjqTHOh51$pept<4{BDuGD*Z{t;R(K7&xVZU7}tB zt3g>eNSJZEjZFdD58_9Nhx*G9g>g>a%hTr1l5D>Eb{$acb51tzsi}*O6wf11`h@P! z&)@7oDK|v^=>F|h>WjXX&w%2LL(O(P30=CevCO>jaN9+n(&Y=UMW>cC{(9GWCY$Cm zjLkOnIL>7#*zve6g_d-Ij2_ZMhsg%JLGUiW@gi;V)Q4X*Qrc?3dXYlOKly`b`sMus)p}M5~^1EW7J3Q83wh*VMvC&HDHJvoQy0U-lbI7uyjcO~H zq9OY4W6SLb`-61Bg4?d^;+3xZtJW8CJ@rc*6T^`wO&OlSw*Ic8b#7AC49!0xcaZAw ziqUj-+bE&IROQ@l>-92Agk5Kf>LJaL#8E1lvUf!T2@>5~iDEfdi=b-|jAR!IBn7u-8m&?hvzdL(vvvl++Xhjy6ELFKv% zd!QopwKpJXx|NMfTCx{-Peb%lPnD~hca|k$%JOX5YFKN9KYVb)45v%V-r-%*p1>9} z-Q0~(_n{)89xg1ZsECKd0N$xP{?yqlz{p(bUI;UZ_egH8+@LI_yL?iL`NvsWyesi1 z#->T)j`{pE3{fGl71{}MD~|V8FSP*s8xpE&!}0q-sMGpITiWUsRbY8Axex9p4%a6G za8o$6R2poq=oGN2;yGE(P_+87-U@9b1H9n{PE=Sy{uISst^odSymnu%CUM~do$y5WI z1I_%BfV>%+Bwe=M4s7u;r!0Hys0nteqp!o8v^akc_#S zgZqKdH9e+fu1B7KDZWEmf5B`QKf^t;_?zGGL{yWpk6vI!7r>^MdaNSFqIklK^tnQ~ zGnCgSrDYTKOPaSwQOyGZZ;u9#FmSkKY7ValrO#W+;1KaH2@)0^5_NZC$OzIC2tH<3 z2m!051j!Bj?G{!K6I3t$*8i0QI=WK#6FhNqch06I7(L8bZEfLq=VU|IqKhBIJUUIt zwf$|TF^2g^;t%mklHu#T50HOH;3lV%*1bPhe-WP z6|PjXRYoyKnAZ0LbHE-~Y=E3dybxN7 z0~oKY77m)0YsG1{Qr%OFsU6YQUyRtSmZ47&$!D3XHQ9`tT8v8E<>&?wg;Jc>sB_t! z*Vx!6Pnv~uwS_?|ts3=(QEh>}izf0XRMjyGeTOv~RDz3ClrUh|RlL6#bTk=p{aZ`F zTB9`5Eml$J9Gt{okSu@wBbX=#L?6&enGQhI?#TRYmwX2%dt+@S%)+>tJv z9yHosUkgs(NP<8_%a()wC+3g?V>k?O7QT@M<}m5vQ&THd4gGB5ASRu4O90dqMyXdk z)VbXPOZ`dbEJEVxFMxFm-HaiYoG3lr=rQv+sKkk+uI@Ru-5z?zdMOeH~S2W~=DY8p(nB)R}WcqT!0P3Qh2plz)ty5ifU z`;V#XlH|#wc&Z~_xTjlz+^D>dpC8=T(O`?;wk@8~V^U$YtCE)vAXHaOUbDc334_N} z57Kl_z_$%|L7vc6TsYgPyI|`w$>1+V?#EjJ&a5DqwTBFeABL zM*rFpZ0Em0Z=bin)vWOh^euh(KA_+FjqlhU1NSG$O0eF;4gvf=Vor}DJ*>UgH+R=q z_C8%)G6$GtA6}mo?+xlVk26*zJ>o8ZW7)K}PU*tOd7I6BV0@m^# zyqlaF{fo|VS0nPFp}$>9xRv^&PF>)X`M-YaEtJCDhoGL23k0wvY!ph8_iqv$uOd#} z#ngXw5?q?T!Bg;0~NCY-D8uf5C z&q+kC{ER63W3o!?r2~r^4nXk14r?WtTECt07^`WP<8L0oO&nCl}G|9y&eGR18n9|{RAwi z;T@s)2#P@^Zv4>1TRS^Gtjv&Qd2JpyG1I%~-jVzE9nzFmOhceQ&Ih!$qIX08F zdcPoel!k`@XRYg12b=j*Egi2_m~y!f4*IBEh{8@*%k1l-^ey8Z%aW}geP?_x1zpya zlU^x=JpFTnLUGp*j{<8ujpYzl{(#!+iJgHjT#oI>$FX=aUY*T zeK1d>K*o=p{-oH?vV}r=-^t66aXP-pVm{vD{KtdNmAsdRwJGZ zOX~trHKpzyaCha1EkqUopQ-E-xEWVD%LtlR>FUhOlzxTh8=GmMlPHX(|3%eCiXA~e zpj~m3R9+hsHI+F7cfJhda*i)ptMy!Qvib+bo0PIdZBMSHv*_dx~bKk-A`^@q* zSks-ax&8{0L`pukDS^YNe=y;9%1Dk80_xbYjG(wW{JC+ta;e+o3UCqzt!N&si;)%f zd%RROS;UeDZIh}I*&1!h@#d3G^wev%y=sVhD>9vosPohY2116nFCPeY2GUr|*ea2% zmHqIcJD9`yE{$3TWrH)8ZGZj!;4xNUTN&e_UfT(1jYv1qFFCc@T6{J&n*)dCzRVu6 zoc1FFJWqeZQ^r`2`mG;tnY1G;ydeRBq8r?+ofI{jUz^)l&d_|t8=eGm63 zx8!4_$_U^6SRVo;9C^=wWhhSe3iBXiJ{rZRODUGXwfC%P;^V#LqBgEg}!jnim+0_r_Nt+yF{L$$?QjDJ2Lq04E6Xd>OD@3W`& ztOt2^w6_i0+%M_!+3?xKz_p}No*;pnKY)?Ts<630!N8M zA(xln2=XiEo8)|M=JsFE`7&IZ5V0`;G& z5LIJe2^#Eg!HCQ7kmvP(9f+KtDn4EA7(}Mqm->e0e~Bdxl2&Fh zGI1S000rrGwDm&@O(V_b9_{y{M$U?DX+q?DESs^t%b~s!-Yecwy;ZsbIUCz7daK|Z zjKg=;CVCl3PAifjPb2@y?#m1X?Ntc?v6#aKZt($T3RyZDL^YhgKR|6MevqqKF}j-> z@v!citgD0bGn~Tlfo3|}C|W;P<;M+{;0HB2|D6^5u`kWre)+a>n)$bB-v?kivs<(Z zIYqs@6K9OG97LbqLVm`!30yPG@`MgbK#p#|YZZEnW6&c>xf#GX^(8W0P9T&Rk}-J1 zkak>uSQhVo!?f9fJb|Fj%FplHzlWo^bQ(zApKv7jqs0E72uJ3Bg=5mcX0P&+3SEQ4 zf99(wMl^_O@(s|(W&nptBFV&wToVv5K|J-CMz1OI|!Sz{Fp|Gb$~0_A#@ zpe^2F6{IpnZ$+aKw(#5Pd(9>?*g=r zgAqE=DEkr#HavQ0)`tpg!Oq);#$wbdh-Z_?AK(;#0W_3TgXU2k3 zUb6n9&2kD!l4@SldwdxAjIISl0Cn6wZy_#o1M zWUG!8A){2YV$hbeL0C{%;t4;2kUgwpU3T#-vCAw%s5yC8--Ms=wRyVhZhlj+{=-%C zNpYN{v2ACN{|sMf9@(L4Li~iEKWA;sIDg#6a1_V}pMcnUK17Yy&K5(cdyr=gk`Lsr zFq{BNm3V!Nya%9FnBAGsU#D4N(@+LKhG2y-fE5Xe2XdMJmyJIK)D8({da;uk$ZkZv!_WjF{EK#Z$OFJ)~eB3ZH7yWR(jWlLu-K>X`PkRE_4+x(pfDx zH`<@p`%33jR$s3^`95t)k}*pL<&0dXcpqinU%qwvJO!#pgS7nAyCaC1L1u0Pfzp+> z5F=P}v=-OZt)++d8T)0F5!3Tn z=8G(NERoH?n1kgm*g)F*^XxWdK-Yd-%M9Hx{I+PuBbq_)TTq3Ia{V57xvsX@xLjFb zZM}kCp}mSo0xG@E#@@JGy*f193s54{vVze%gZ#&{hN=;awh@$e5;-xpxiM@oflX2pP`tXlff?M$qF32Sz+rk0Mj zPLjE=&K-VpoTiNLz__RnRt5<>M}cAp^vLir2qoxuvGq9u4C#0tpeoJFm&WQ$F(Hj5 zIm+_mRl}Yq88XAm_JxB%aXwVk%9rMoC-@~*C>1@bvW`|618#9}KkhS0az0X&mx6fW zMZu1bMj&|QSA5Nm$}elG?StMvMG5hSPmMX)3bwwy+~4ydR1-7@!!OVn21vaavX4u{ zM59|283E}*zm0+;92nc#^D@}bi?>&dRtOr2`bdM)j00WIknodp`$DvQ<^oNF?qqhd zxEttr4Nk%|=63L{zk9a#u9BiA?<)y0CTN+O`VnVjq0x=I$~5N&rq(qY0WO3Dk)%r)>6h1_WeAsUBNd+>R6p)i4oKZ&fWwl+M8;C|_tAswU^ZBRpRDW*8vva`X-XXNtFQy`q z?n;3wINBuF_Xr(K?TFS(ztp(jL~7||Iz|y~UR&slil()W#&hE}EBRAFhZaHC5TcE< zO~W5hLc)_mr@o4=XiwY+&3)J;VJB>;e09i^Ka(-EhAJ0Sx!;IfZH=VfqP6ELB|ibF zKTbDC8i{TjFniov)^pmG4-utolxmH~M#eDZtCek2;X zTi%^v%)u$%f~O;j_^}jm6L+4vy88I4mE+j4$a?3V3bol&sHOcErcC=t$odRD?3GFj zjJq>Q-K(uv5C}6)1iZGvZYui7wf}U_*s2EBfI!R5Y%tT8$ zKAx~*UXSpa_ku|xX#JsYc7uwQ>h`OK!FE+F_^w-VM7L8{UvcO#uI{* zr>(?feC2RX_L#+4Oh5(CL|DN;raW{&gOE0|)XtF2VkFn)>;SazoLi0qSZms~eAyo8 z0+kTkdrCHgQgg84z^;HiP1d21Wd>zDasI)VNzSY+ zVBklT;G8{koC33nxg-TPBG-AYD5s-d`W3Z;15W0sn$Z=mUPT&8W&UD`YP4Ksak&|t zx=hM8AC?8v){bOtwwI*7>RWl7Xq$jW*gks^A|iw;P3MKFSgez9EU#QjkcuYAuYhfj zn`+I#qmmxzFMvB|c-lN-3Yex2&98@^6iAlBm**Sq_YjCLxf0Gvfg0y6F2!g0cZ_v6 zjh~TP0u1AFl8N(Ge*3Bf;}Bn!H+Y{67lD9=nBgaXkRd(~{2zBaKZbt$gH+sfBd_(1 za>k8N_CeriJu~mtF_&Zz#UG@Pbga!WGpBH)r`(~nmi!#%?J7sn=pvXn?%hRw_#I1r zp5=#GrFyzUOs`7{#o7ramS%Q}{ZiqoAS&#;|h$=n#QKn6xNOtd-n<`nK88s`T(2|TnUG%N7 zHILoyQG1`o@ONovy5C6#bIdi1_ACz8HTi=H{H0=RdU=UT6&aj9tElkfiu^qqZS1%Z znbl(j)Ozt@I8{Z;Iv(%Frtw&S)G0l73AC3PY+mK3>g#IKwt* zx{!J`GIYzXY!jpEimqQ+@}6hccwdOr{^o`|9WF~NNNsNlWjVW3FnFpP56!E z1?wQXJm<`=qGiii<2DUz_BEgyEv%-b(i_sqn$4FPiyl)VN`dW8xmTZ-{x?S(*&S4*$sy z*2;H)J>yRHolDkztbOu8sA}Aux($LayYg&BocEP#^W-As-Z%Uz>Hb}n8e{a+PZVKf ztJzF3JsF3;#G)I=J7fKfrt$E`P&8)5P|*3u`fF|`PuU40r(-jwmij=SkI-xadhe1( z-vyfs#GR$6e)7K1R`aP?j@`&9b9k50?mZ;}nA1aMe&C~GH{^aE2IPE*Zx`KC^2M1Y z?0K9*py5czN&UE$v4)=adjVFn)(j_cdcF>Q16wiwi)QuKoP9wUY zrZpp(0H3~G;+rI2E!}nTO;u1%P`!tGZ~41(O6CVs5pL7XJGvSkzr8v9J;Np!nD7*4 zpY{-Wz-c*0xHI)#jKLDa6=*VCNf6AjaMu`2S6v=shAG5$W=Jbr;d?8r^2oq;r9_?! zA`BPReN29bC!#8@xMHVW-Z3PwDvWZA1EMrn*|VKx)c7?QARSfhS(mh2$>O0Mytb)d zH8$tk30IUMI2oyi)K-`w8#Xmu(B`5f{o?TQh`6O=ue@a=zpXHUbkz%V{UGS8DJ!U1 zgc~U4T`o^LT9+~?vvF9{9qOYXbP4qtM&l^8yT=t2pz{i&Brz5v_~2U8StYsKCU|jL zl77G&KE2TLVHa^7<>x+XuH3SEjV_e{CGIE<-8}ZlCivz9?GAf>c4V33 z{imVrcaJ(-hEQJ`v0KFr_5I)8v;j|Vof8-SsCdZSJYKN!IK9j?AI#)=?_2Mv*}OkT zVf)D`d9K%{ApEWg;3Gomi*FX=Y#J3;)o`()lkJ^ifuuP|=yrQbdsP;kQfc=ES`&pW z!01G9bE-rT%WJUUTA-ssjo}`1p_+|ouX;^Az$ZC^TsZ*f9pP#n(Z8SZ*mlG%hUsgN zuJ@p?($ux+o%L+?)k7|Md_yRIW;KAeTW}IBgj3jxMsgvMqkwPz1icI%4W^JpD2O@l zvzxl~^8#C*m)sDs-!t=qXr8gJS%$u$z94V|*73s?3>WqR{)op-GqNq7)27)4A{Qt1 zMX5H3b@j_Se8%pYvV7$8i`jn$-=JA^Trxt$`@d-W%BVWmB{^^EwiTYnx0wH{msw!@4KF=+O=!fE>IShZx`kj^IgE= zdG7j3tK;=DOUMGpW;=eV7yOJON7W;C`-*~+-HUlI{UuP&pb!Zp*242EaXlRA(; z@vT(_wY$3Y*7aR+9ML+;OX`*Ruch*Vx0m$cVRWAd=hlR7?uzaG?Gi6UkM@HQ?xf*# zE$Opu^!C(=Gn0wc;5oPNbiP`%7(TwYLpM{q~`zP_X@>%6X0A>OU= zUoa%TL`UZAAp(fdH8|nk?BBgfTeWP!xL-fNe~G0bOgtNY|3bJmIhnlAG#VFa`u*za zg1RY{rUYhC3Oh5K2d@|}6CS{a?q1Ip?U3vhLFSXT=LIq6h8li>F18kr7a->tfj>Bz zKR1<+eao6GsWxp)nNQ_}spK>id^!`GKF%kyG*M;zGlS;Yk#E>yS)#>_mh;pKiX?9*@c1T zcPHvg2JVChEamDjcj-go;%)RHQxE0Z7_`AY$#0HFYLYSGwpxIWhHc99x6d|shp;6e z_k(xr3?(6LQ)!1O<_U`Xum{~dA&B(jJ1B)?H%hl~{ADFtW{*Rn8pA`@=Qz$dwlHR# z1Gim7nzL%WkI$<$8+sBOMxS23-~J{7IaX-|5IRkwll|ndDeKVR*4@W~VdbTc%ZsVl92*%r}~h z^__h}4%D|nrO9Wn*Mf-MLOYJDS|K_skvNGUP5%kWs9PbW3F|2Ia2my0zc)7g9J;Py zw4@22b^4}eA%YgTF%0GLcM4=^0hYa9tl@1FMp={};wcFoIdt}w-WLx=A~p#kjnpm1 zN@Yc4qZ?BF$_(5F{nWmiTZy%-+R^@r0bZstDXLtRXjdqxyk8_{3(AY)rl?jC9eReG z9hi!|uNgu&jY&=-C;7?f&`nDhlHdaA)W%~onqaADlO%IBz2A7d47JZvJDPD8CdqcN z6}za#o3`}B-X?Fw!OkS2vL({d2WI^A=5gwQCq7b%H-hBtZTnlYfh7zqfqUrL0mu6V zqQlOCj$bXM+hon*EoY>1h_Krx>)w8@LaEQY!|ChZ3NAs1YeLM5dF;B|V<@XTtyJQ+ z8QYQUZJeLcfi4rn!|HAyjfxcwZhQ=1ViKFXdRIRpE=VLk4#sPjtr zkL2TBmCT$Ac%)N<1ZGzLy|K<;JeB^WQ*e|3yCVIKe^jylLoL?UquFhO0v~o;XHf$2 zzM;MzLtc|KD-Xt>bW*hBFb<&a9FO#jTE}2<+HpX5pvqeyTDE_aL->^A@ib~O_Gt^d zgd*6;#bke-`<{=bhyM*M7yHigK=+*<_``fpS<|fEq^Ri@smD2x8iBZ_sEF9|fK0QH ztY_?4r7Lx#VWfaLF z7=-An)s>ZMOo}&?SZ+)LvW17xDAAVvx7UAiu3-h z$I<_>ztYOPvkKO8XunYhUCKsZTaC(k4W$}+wA7^397O-~_c(#6Qo*l5aw@6cq%_a^OUAQ5W^cEMEy@%!^(<;$54$YAj3t4TuKMBQ5!RB#afXefUKWK1Kr0s zAa|kMU|5xAgipelGR})Do}q(H#~~Nl0+GGq{FkV6`}8fwA&rmf3)Q#PYV*|%wXKB< zWIau6irlCSMJ#xTaa`YuA)e`%vh%X#oJFh2gZ4R~3bA|YBTf_K&$UdFj^GM^>(6SI z8w{f4ye{di5dqja+4jD=mFs7khl{4d?4qW6dRUd6q<|h@RBIwK{wEz$Df$Hpg?v8h8Luj$1cLU)b|& z>sS-?)R66E8m>!y^*D5V_a3TfP3~>kX)22Q-TDQOz(fGjM9bk_=5xTZzPsn-`Mb!e zwXYlJQ}Lo9Yd0;nFI0EY9i3TDM%z?TJY7?lgJ^iZCw^WBGUr+60XN=oLLAa4Vs`!> zQ7Q#Hq_XdIq^21wzDRy;E|l?HE=auv2^un>NJOhLJ^~1N`%JgiFr=03wiF`ECp=G+ z#Jap2siEUt13s{ebU0Yqy~yGDMls-I7-nQ){1S#7)k8ALg2|a$(TD(C0H+t~rS^ z7jaWF$0ceTTHKB(%>eq>B=RK|qvs%)5itu;G)nd^+!V#BX1V^FsU|V{Bj5cJIrZSY zp)yY!QwrzC_c6=G)d8@h3(|91G(Oo$ITu@aZI=$|Ngj+XZq;==duko!xCelBLFgN0 z*gT`^r|xeS`Zi~q<qlqKimm~xV=*numTPT$+lJjIaH_&-VY}aVKb} zZ)j#LZ0um*4ql%7_BZQ0@X`v{w9oPH692kyr?P*{KZX40^TZ!T+qIzTv@-)JdvgN= z;jrUiQfd7*JC;sswO3t6PE<6n_S0N9q-qS@e%_G_aNCwjZU^4&Zg;w6M@F@n4I|U!Mwh!2`KFmWY@_TavQXLk(gZ4{0jA%+nQ(n?`AnSOD<+)ZZpdYH)vH zldGuQthF|kG}y0L&idEJPGz$6HdT368rmV7to|#YI;@^x~66XWh`|nZjjyp$s;W(Skx)d zPxh+N^+aESi^(5uybPb60gt=3ZkT6k&2ZaU?dZhk&Sl+>D=$3>XBQOrQ_}OZ4z}hOE&j>oyPRwtu3qJ zSVAfKbc_C^B9+3s`QVF_I^9Z^$pJ%T8e$%YM6iX(Lmf&stf*lau^>xM)7lf zjG@?%lU_kw78!`Kbk>=%tP&~{$6lMP)s>0^pNrV_eK)yt)0?`@SGS2vC;)|?k?t=e z2wAdCCx~(K&#B+jhj-wUq`!-Ig1=Ac%)C2KC`Q|I*6Kwmv_u#p+cL#Mdk%U&w{cZyEU~*G0XczaZV?}$Hr-@h+B+$A;U~5Axg=x>?n{xom zupDSq#uA#f;veI(Mp}(k@QYN-G^S{0j(Mt_RLhm=0t6i$`U=%;?n0e=T(#?H+z&Z0 zxFcdZJBu%8C+TvuW-E48jMtHJRP_!!K$@$iF#1E+> zWK)f2(lHKXqt;O2v3cxHKdH_0?ipM;8%y~ zV{=2-W93P4DVw((Lr}!0?{V`Qrk7izEMf>@fAo6=6wxlsJ50Ch@6sO9700ocY67i2 z>dyg9WHTQdlOGA$Vp5Ro^pjPrVdGO7O><{Ha@K|-XIuq9jY)=&O@8|l0SUpqvNN$D zUGn*q@-BzLzXw7=jEsExuy!9W9J~d7KVPU~-1IqSxzr?hBse`x@!}ic+`tx!s|zg@ zqow+npO{^54L_BH=KSf0MU&95v07mp@0{05Y+1buf!?y&*d^^Bi7O8kU!YxJk2@^v z#KL5#g*)$sn(G^53d{GV^Od5-qs%>^SkNgGBu7oFui=TiI1urg&mEhPIwFvhw;r6qubQ!u&t{SDV1fKjuo|4 z6ytI<<-$uNRR?t0`mo9jnO9YspN{9-S-p7z;g( z{WTj1I6|20;%iQM8{<8nA}b6qz4<@dY{_CbxC?M^^xI+GyGf2*C9n869bMZ|N5GZ^ zh|1LSYxZ zd9VKTUW%XehNSqWG4v~SrX6EuC5rsRY60U+rd?HJ_x30G<$_-Vu?whF$+@+|iiGiT zeUX}mj}B;c$={dle`){-iF;h75bV_zUVw7Et#VK3iM6VY#CBXa_@XXBI$Qaj=Zzga zvBc^2(Q*4;loz)fzOoOy%@|Gk(1tZ>JyqLrKLT>xis8&HK2hj@E*Sq!dUdpV{UIQG zzAu6jp|*u6Kw_t_qEJHVTcFgR?Y>U?b5V=H?ZF*5>1zEO30Iu?@5V*{P0sy8=&OLj zn+TyT>30?BMen~%KNY-I)PN6f%%RH^Ke0$Y*p0Oi3LfDf*J>A~<^di89!@ zg*MTpvX8iF9$F(7YiK`ijI1@y6j1zX<=T2MJuh9`kLxBYqG^3Mk zhx1x(eJE07e!qyX?0`@dmk2K4FeWq^xOGluW_FzM|`o2fh@*=!$_jUF6 zmx=)4ZIPE*Wv-sZ^AxU<2Io3AGS};gX3bu?MIRwfhXo`~MBfEPw$ktJDRjV#1wjId z^l=W6G+L4s*%j4-Kw8xOlgjFw51X$r3S~nx+DD~)ZO-q*?Eb$JcM6H`e<1XSETqc0petBHt-wx zegqEkfIp-iWgu+i!>8)O_>NWzZXZuycj)hk9Oe3-H_1s!SoHfz6T`(8(Bo>!e+S0Z z)-c6KlrznHpI9)mB(=^(OIyHp%YG#=p5g<9EE0xDlp#MZBZ1tL&-)yPdpvjXYwn(CrJqy@1nt|>Sp@CT zQZE6))T|OSb^?P+1_(Pur1ATpKi{g^}U1x@5$zR~cpMrS%Qtg9UBnI7x>3WqF{! zw(CjC>G7%>9Ikmt7^`>I%bJHo`Mn$#WcS0#9pIQx+ z*aA`8OZc1b%b}JF0cVHBvLpMDL%QitUl{y*hLmQ1MXxc-`MexM2mBBCDS4UVi*u$I(xuxaSQ9wOUiCGro z3)KIlrGkXSzxogs73+PAak#_s#EcmXDrHV~WAJNzQqPjjYlIMX)4 zA&mVUn0N1_%|mOSfB*p$wCMjV$|NzJKEMHD^!uWCOim=n6yz%$L_Ob$DfQi1K2xDVZc;GE0~H<`!~{#oP)lh)gOje|Ae#q zI~#!{-jBUYmPt8zH3?=T9)uw;;W3q|G66w(Eq^5=PX22$;{9LAh*93ZkP(;H$FA>c z8q)<3d%RUug9>sfz+?p5DX`)XG6IBNY^CWe7uvj5sDWIyj;8rgtkOV6R%W4IuY4KW zM!;mbOh+@}=nP>E=<_Y}RJ9%ko)W4gWqGeV(DF}Ari@!L)~?ypP=~7E$!x(b<8UE@ za#V2Z;--(Qjc9-w{+ggW;H(OYm{Dqnu{+>6=*{;5uSZY$QN*~Ux`SLob1lB#jyRpl zYNSAMak?lhyMl@+QGi{@R-D~y1hb(Q#0@=i9e>cR07-%U6xh_-dt9eDf0bf9gQJ8e z#4k$@rXyY&xKQ%#5CV+i!E{9Gdd;qdd8!L&gooJ<*mcnz=`hpDD3WGt(a=8w!!cww z0*e1q(CG4$GZHtEU?B?3Ll}{cnAE`ZJQ`#*4wAH=u;KArn*h=b#o-+7_sXdN zxe_>ZAF0Pa`_$*vTJ$Rc@K@(B^4!e}B#aNuS|5$w8i^oT07crey!S|2dg5Y1l;ak` z`%R3H4M)|*VePZ8)k+EzGED4-n~Hz%5Y+Z}FWnh8;L8JK6XT<#U3O$aB?m?a+2KgI zrG-a|QX6w!6P8q3uxrg#ry8<)ynA9k=j)>3-()GxmCi;9N zonMVz?#XD%`k-2)8e(j4V}<=wp*?7PE^O11NSGnKA4BQji{G>4j7exE>_N?PA3Xi0C-ZtII1%KFh-U35L^nh5%(IxDNK0RWX zeZ!d0E}Oj}Z0P}kUOhG#ta~h0{_QK%(YAuMdLV_C;2%6hL5R(be$4tBHVk7>e514+ zo!lsIT0idiCJ|7+n~}f}ijPAlCY^yPOf}an(!RAz_~4uGOynRHq%Bi4^c6K>)1r}0 zAZP>7)_#llj}^(fp~$@uT#;`7O;jvz>*!?aVEo^frMmwH6@xi*OHk&6OG_Kw{}vSs z=_bbu`zKT! z{wGw7i~~l+WPe7*KaRjv^>3&c;jgH8z^3zp=gk*0#xSW=+*(SGs~L=noBlH@F0uQc zQE~V`N5u&tf1qNDzW+TcR{0w$9#9-I@k-5_xKWm%u5p_WoCa`qXd&nR6%}J){1pU~ z{sDrE51W+lx7%s!9IaYx^ZFK4(DW+f)VkjZg<;~gTWQV*p)RX#?Mb4l+rjMgx>{}_ zV6$mB>ROTA?;lmTf6D#Huw76-jnnUwIIG@9SJFq*l005}n}Y8iKr1Iz_v{3{lA~!W^A3fMhf~q{%F;%4DR>9>AfN*TEuso07v8>p7)! zCWff~2LF!{BD;Z!$N;WR&|sTr&3~gh{Sg|*4lc$H|GYreDUI07ilg%;1lF44qJAZi zcFTo(Z$)8G)(Ufg0wW#}qk+Qsp$kUYRh0|briH4-kJf~HWoaBlXN4WvtF#UIK*_pb z!yO1!g>Bwi$aVjerm0+D)2O3S5MsYiJQ1P=4 zw_^6GYl@D*(m@e}!JNf&ocP&kamfu!-de%y8f{Z)PjgtdJl5pE=Ig?=l!b`P%Y#@D z&J$K^XE+v)hs-gb(8gS4R@gz`II2tLPyNgz=p&N?Wu>R`(#J6ULfrX0UtJ4^&>AD% z)*}(XhvK)9#}UAe3`Wba>aCl4Tx(NkKckh#+?Pjb1YH=Jt^O3aJ%~Hz6RDZ>#p^!f zvOSNv@NHt4DsaK+38}Qz+BsDjyUeyxpQ-Mnk1+6kZwT;gFGACY@6bz2i;ILYACr+< zFD{!JAD$hE((-PH!g(1fYQ|FcZlw^RNn!cA%thuG$PT=CdSW5>vfP>IozN%Fn^gjN_(sI$X z?Dl?%WQh$=Pi3mD&dhfq(_d>7+lR79qf9^89F9b+Hc11LF|rq@-s|pm%UW5DJkI31#zAm=6+0HWx<$#RkTCT7gGhG|{*Bzfad=J~`P(l)U|^d3`rdY(xjHV(MU1>VIK%{%^;~{tM&O|JdFJdy%Y& zqWI9~4`P35Bqe2~D_V)0?}zF;l+wwJ(aUtcL=1(W^_CjHTEdJa+b0c@^_A+lcQnzE z9+tkYVtJ%^L`y$|M`M1!?9qQG&UJcvdRFs%lAiJQd*J6gX1BsE^qyjxPe6*sfjoth z`O{7;pc#D45R(3~$_kq33NkK8Nbx+@+Den(QJp2spauQGxP*K-`eaO=EqRKu6J=vN zx=G)$K>tUvX7|k(0JG7LRLB5LXB&hbYs4Y%5$A~2wN87tIm}ehhE}|d5W<8Z_Dw2? z-95-)^qy`|otfK|6U09uFMT&5d$=}8>@?m|hK%0>F6j+2G*=Zb`7yIAiUz z#Qs~xNvF~+p#xwxoErbB6G4iZs~g5uAs=~U^k8* z1k*(zzbt&jJ!47Z{N~eS%wksNosClGsfSVb`J+9pZ-hijctX$cS&j1xHrHsOv(s04 z?)+1aSzYKYcI{=w)XI?an=*MNJkgGSk*y}w(lCbB$W;~M$Bia|bo|QTTH~Myw^IhzWZNMe@V%}}lYGL?%~ZYW-@H(P&0)kox%=Kv zgx?z_^&xA}XYnF`9g^7k)!JkQuJqQ4Opk8A2gwgG?>WOGpOPb3`J;+4HtWqDya!L* ziK3{bs|f_@ZivmwB)iC1D>2AJf96H7Gk6L`C;N3Go{KU;dMRr#`l0C@Zt57 zXr#cZ{S1>_O2%Qo;tWf2D}y03O?-`sG&zgPczl%>`OkW*agPF)D(GX*8JRxd9ynzX zHYhs0IQ)cnWh9a+w9i zji8|zeoJ?VfqD8;z+``#lPMlM_aKLR4VSDEHEj!0sTiq$n;Bw`vYwgD{j>o37$ASI zsDh6obwpejI3;*LFRdUY2X%U&$c>MNZKK`O2>of*a8r<{w>E963$gk&cAh%Z9@|)n zh!m4>WTk$20u98kDIKz2Uj#?cpQF!Hjhdc=Go#Aw#ACC`#6z!_o9rLuX`!(!akdyW zUoT9SDK*meX)=5w&^{C4NJbZGgzk6r|qj8Sk_WuJG?dbfXrWe(fe?17i{u!`>oGpw~mj*gs- zEb{dIZWLy2&F4@=yRk7BeN%DR7<+%<&auFVUP95CN41XXoma_KbxC0(4sPC09r~L?@uo=iu|r- z52t(`8WIqS)Ont(;HIPh9%rO;`9Zum~nLuNcc{{lgpPGUrHBq*%Ijj98 zUA$~JEC8dP!6DtcJ>BTEUq;$?tQI=B&DOh(G22#5%mw4Xf&ZhBZ{ThTQT%IV&DZe( z+;}&6C8=HXT_Qr5_b6@f%mZOL#6G{O78yb(PtFIz9JYhMn zhU|Vi<|}_lN=qp60=jd87&c$X{O%l@TO34hfmMyX6H%h(DU90vRyeyIRCd0}M6#ON z>_4xKEjXXn{GEHN;tea&8nXQ1tRz>p0{q)7(50-u-uB$MtZdaw%t^Lce2(z&yG7g+ zdTviOBigGb@N%t7(X{6~oOcm*?YlLRbXCi+SYun*DF}3V+Y(g1N*%V2&}h}$M4FqL zui>3*v*Ps;?E&3(8b6VfwMyBy8E@|Q@ipptNGuFP&xvnh!T5ygG6^A)Q$Ca-cxp>2 zbJt;YFxep|s%@0mm!X>W)0!^}qLmo^9`8J_qO9}_Wwd9b2p*$7UHTePZZ=QyK(das zBL|U6y#Qz}2n>9PRW|Zvy5OU~R*8*uS^m(x*Qn^)*Qu8Z)P_%KKVQH~4PUX}huI04O2~kUHhRkL+JoSEy~U~TDjjn{=s^_zmInq_^bR0mJz@fU~GNl?C%7sC#G$mB$! z|A9j^&WrC&NGG-E`2N@et0Lz&X@WC(_Nml?4}Ngtq8;R#YSlUJ-L=oWJ>(ev!UZR& za{SZcdeOX)DwEqbDjPsoB>S4W|7*Aqp0nMz7I8FgrVx&d+>dgV%4yWt-q@)RtFX=_ zOc#`@JBwZI&CmmbOo0S|YXW9}$P=}lUG6aWEB+!f=}oHFjCo`N;dF=WO+AvRO~e<2 z)BIe9Z5#{Fh)XX_@-^P!LOGJ5sX&6fMqI_jlCQ1&+ldH6e#bEsD;1x4bAM+ThF3zR zA~!AAiEiSyqjr;7(L8Cks1XEV-e#~Fe$bgcw`tY7co1ysVM$BxGf`Wu=NzAiyF#x@ z7sRU0tv_rMN_AZPpz7HuXM67FA8c_$ce>@V{M$OpVz4b^-7DDV_F&4@IU~J?2D&3E zCLeU(Y&Kw=#y}w(Xj|E%7QA1VpZ~o$w+MNo=iV7&ZVPsF0hjK!&VM$z4$nkUT`!&7 zM*(pKmlhNV{~~Xi(-|!Ze`Y4+mvP{H!s`yr-yVUP5QW6A-hJ$0XAf^H8UXOtYBAiuUhxd zFW9p@9f|(YG!J@JUyq^tcagX}KCWDn@3o7J*)lltX-sO!E&j&v4OsjZ{o(T7|8;*H_=3;SzML-JVMI^@fr)*;l! zhs3$SOhzQwi{)RC{QYwj@}E7f#=foDpoxL+_*k9v145aQW&>IMntPX^K(&5fvtD{7 ziY0-yG8nn5-{Noe7?w|f>CVJi2pR(Z{!j0C1S@FfzBe8~e$IfmH{k^$%ytJcRPO#B zAI-QMg`(ws;dP9M;8!1u zgqSiBq%UyY0}$?BM!9Ve0hHK>XnyJ1<{jS;Bw?Xkob%+Mfz8u_os0<3Mt0(vAro-P z#YBYV&soj0>uRc(at^$kFrcH4_h!od?VKwkrOB+_AAVcQ8G|THb5pPUn~7Hhr_&wg zK6A`9gkAq4r%iFxAlb&I*iib(IP1K0t=y@AH`24`@!OXh%J)P2=MdHU(PT`AG5Jw= zya9Lu>$14M$=S%7L6wDk6-18Eifay$#>Isv__ThU?#vsWJZEEo zv$}lli^RKVJ<{*mdrjs^f$1i+gulll=5Hi)6xns9w!@IZX!-X(|k*awK zD^t}aY0LCGEA{%5&-9{MX1YQga|66(IadUisLl`cW~uhMupNgVk^8{|sRyj%51HK) z5F|V(;tV4vvw6^N4U5{U99|}Lmuc8>H}tV zX&p>gaAE}8q*Bk-(HCTfOWPR~4@X2GHQYLOL(BoB*HClAA6255VsugJc%j#WYRhA4=#Rb_ zBDB+(#zDQkx%~kl@cGbHP!lt2VmQ@nLFrT?Z!~BkJ6&#fdN+j3?Mt8ll(zGAl{UMgr_KqVeq2d}_1c zk^#SEA5EoYdEwB`kR^rYhZw^WB-Tc1C4PliW;tk`M3_^v|jhkkFD^E`gDGtzt2#WX8#;DA? zv--{{t-sudKMKbYap(VjgD&U>@#gQo(m4d|kXDvNFA1WLSFK0nb zRSt2ZP2ZdOhx=O9eXQYe*)0G&;yj|9mbmz+4Rh1D!u0=zk= zO+)eu=8HO58TE3LiN_wMe4jKS?_B4VA4j$=ur?Qh<;D3!Bfg)NVVDto!t=3p4a+A1 z_+S)kcmp97{b&=bW&BFAI!vME@$)D`o%VOn{5EVq*q*!oz*su>0YmyuUFS}{pN4RA zoN()iT^fJu&UBTxi`>UR`bBby+!NEAjV3`sVkceB`fTUDFAI+|;!7NHq*`vu!=Jo? z+rtsY8 zspPiK@$JzyfJl1S{BW_Klyne&IbNSx)b%te?uruYy}3}FVPNZY0G2YR1GGH@a8ti%-)T`3KG_;< zNU7(&7~o3yt!9);tt1v(*s9zOPMPOIA^a+w$yE?q`9_gP(jv_l?B+-99!oBgB_Mh3 zq2S|pn9w|YUL~Nb{q#7P=#1K^Zc#9Mu}aNUkRWi#c)`hMxP4E?VyF|p4*{~&fDPMG zlH=JsEPyyi)c&;|YenHOqX{vT(3!^vr&S%(4{fMjKN%cR1*FpoOb~=nrM=lH7Rc5U zSc)q!%c(^KDGo26uf92_-`H&C z+w1DJm7rB$ypw{+krh{*QST~o5*Q}iYsFCe?I~-$eNt$n)Oh>#@^|I-2xT^0Jna%x zN1OPrgXoxm&7>Kpj{1<-1lhysz&kPHB@NLJajnQ0rctpp;{=A49Im4)(b$ijuV8g2 zdk+oZt5@HbdfIxNfMe|N-|UR*!wu+$i}#<>n7g($0eI$Q77&qNKF0q_-KXtyjABw) z+Wr{N**ytwlb$)*FX}b${ozt<`b2%&ipCt`nyJ4ZqC%p53+s}xKRk(_|Ie}p+fRK; zp5P$(7dI^ahYZg8H|poxnk-mp_&Q!+>!NN(#s8`xT&4*6Dbhz1iS?PBJjlX=(ZRLZ zlTr$~rP6eToDb;A2MpEQ4*IYugtKoYr4V8u&Aybrl>BJYp3Ks+;p+vy@bX@zh7sFB zf7a>8W|&yi!eT<18ppOkqvz_!@|zC{cF4vhhpiS}kL7WmZbvTga+8F0+sW zBwKNdYBeNn`Udyi^h=!s<1I!jWTzL*-_Qip7LBo+RR=R=(A{J{ z$5{Jsgi_{hfP-+IL@lZ;Myb@KY)`nNuYwFz@{~syGP{+aU0AvUIFZP>dKgIaIJCQN zrmMScrv8&W!-y4K#>dbTnDVI^QuwdCk$`dvw|u5Xztm7~+&rE30eGO5>1G5nn*+RE zabh9j>@vV+D&7a<~)HO~~V4#d^9s{W*~7OSt{jonon`<5qN zq?4`;Vsg0Xxb=;;O-WeDu7Usi{*cP+|I}GY$-A$9f0ybW7$o)e<{BdR1e!Lz%h_c@) zel0mY+4ff|XU+5Pfd$)l1e^BAFhXD8KFN~0^$HD?oEMQ|Msc8@@wo<;>?)9^ktDF@ z%FQ3Bane0z1ZULHY0Qz9OUTVe&8^Jdg|Q2p(*@HCy?$qJ%4yuNE53!?>gT*+`Qcnt zldC}EBCPaazdIY4je_%lfz#KGMI_|g%8)ZnJymk^V*?GQW=Q!kMv1JLMYU4p5!eH2p(__aIRuF#iFeIHl> zzjjX^1$$4NzyZBPhA-as`fRtJ%bvPN21##XfFAjl6LnrRSNY*B`ks>wG3zaYGZr;% z+CAyurV^zebhMr1t~aUNn(K44V;V7mL`BZ zFIHtu2+)Wltj%1YvIwbl#vY8LT@0tdu1}O@G+_9tH~Q*-DQCpaC?Xe63ddv>u_+p6 ziW^|QDt*dA>2g(;hh3c>@a$ZvAnu2jE^M7SZ(<*waZ_@T?VkzK6S z4jbkj;Hmu3WSd;Ftw#s2s3)`V9CyU`>`x_bs18Rc}G8Hz>Zfvbu!cUd!uh=pO3FYkW}RRt{+VWaU7CuFdhv2t3O)9$Ce+FLz0D zN)Dp~ujJ7(t35`k(pWK*QfH9GeO8_p&teba08Wb=CJ|+*!b2*rV3cghYCjyep1}dL ziWfdVa)gTepi5K6V&kThr>By{Zm(8ji(V`LcELYm8`Icav8mB=%i`il>{pjg8&oT? z4HwO1A!jn)gt+x`@WsWl56xn~C|>uwpwUvaBzgSmNdzqS{z4%cx3AYp8k1c}XZ@f(|8AZNjci5XhG&tGWX8%1WOhuEKTO zWy6z;Ya#Xrnc`#?`7CX*=jR`i_p~Tw>|asIY4mCkhTT+4_0k|GDvCq8Vynp3VXsM9 zGvhQ4R8GZaU`GsgqmOB(mDgeSPX*ar0Zwm?n2#Rf(=%;xy=$lC=6TBc4w9)sde1-dN5b&Ygu;*HmqN27UqGsg9C@nt@+Z}SpiMRw_-uF#Yq^b7XHu}g&qxyXp zxcjoZcv%mpsGb;0BA<`^4XXVkSaZI?_y`gQwHqh~=;l!$-3x~b9X);#YQqmvr$CgdA;%feFXirfYhmIJEDOPpUPH`)gLN;B@3EYl%k5u z4a%cbmM9XCqD#pyqbfq8&LA()Pd?2*5u?%C8f1h-7qKb`L+QB<)1Jrg!nZlj>m!?S459~# zT*54fOtGrqWmP2UELED#H5ngS_T$?m-ju4P-mRu7pf+j#YVBa_8Oiqb3O#9Bp&>Tp zD6b4G`>G$Zwp*gb-lRNVfMpw&T|(R)6EmwxI-XJzuB_h_m4QZ%&qO_s2@|l5O4{R< z-)>Q&F#~u$Z~`%e<7m?2{A4+qc!=X&V3dfKqR?;{VZT{ANq#<|_)eJMP zA0;^a%|56L8??gRC6NQZG>H{){yvJ(tnQfq<~+SetyV)}d$mxUuf$kF}cO*K8_zQ+=lf!;YTd~458-Y_uEq|qkk>CT_491pjJ`hut zP(lP9hYP!b%pC_~zV`WKCD84if`6nLi^?K)t{U+de}%+fYBsN&&$g&byV_@l7083d z%+G){{v?(vabRMtk9}OC=Saua9xYh1JJlw*Sax}^E_B<|K76rPa#w!=(aA|@cO=X5 zjLc1vyZg&rESTO~R^N_d_xB^O*Y|N$@LTXsptg9X4&r6u=I14ye7N&)TePs9~uYug~k?ijbzX?t6oee%HM zte%D89a1)NAcK(Ku>-}f^q zH1}rUd&LK!zRN{Btp>5 zP9w2F=BFfa57uKOehn_66?Vzm6>xdlMrAv$a=wJRIY(=G31P?d3wF8meqzK*2oV*h zCZ6=yN^=96;$=R8{Fb7ZBm|Z9q^DDq91splc>xqbF(WpmS*(DyQ2<2984b@K3T{ot zW&#%UkEULguHpGB*V1D^-=t(-huJDP%%nmT1fl&(P|zaXJ>Zccyzs}*M9@$xuHt3m zE{QwpWjOJCI(HT*I5m59D=!PyNFTvm`%rmA}yOn>gIyPK36e8+5pQosZX5E zgQXc;`u6(_)cvnxaY{tTj`qMRgpu#1azncYpsU~zN|6*1J~Ob z1(VbFTN~FCi0&Wa(4B^qK~7yr0GPK}gc|*37e^fOM-e_dzYLL)t&?PVFhfTO-~W zDW;hL!h4AS%5m$;StIWk#|B>$&V*vunJ&5*hEy6)=#;s+w)IEbuWq-8C zBc5FTrsdR+*(-ZveffKu4zEFXpLpE8|Ktd|cFWhW6DJ~Y$fR~Md1=A{62}a$YPL;| z$}SPuMbIQMLa%=yyw3q=Exi{S1Y-)GJ(!tJnYA7oLuE?41g;9f1qbOe1r0~NN@_&q z_B}I5^-z=xvuic~i{RxUe!-K)nY%xE5Y^$NdRRgwnTyR;MCT-Mt4#N zwp<4yuTZGmaGNZ9cYW8jF_u#pC^k$Kwj6TB){JzKD@y*DDbj@ge0U3_1>1ws6AC2k z7SW$1~MTBp5x7=3s-IVAz^2L-Pjt@Dic!n%|w#tkr13v`F{(k4VKBoH2N! zxU06>mVY9UErBtpPq(-$4xCERDPK8?fJ+(XgvrWFg;6jYThTw%C2y;}o*qYQ$K^8R z7W9yLlaKn8<8p!5kpC)dmIu z*y0DEf*ejGk_(e-&Hy5!LYaFCN=^m@QMf|XZ8U@?RI~Edt^&0tswuBo5F`3{5;E^` z8*w`p1AR3kQZm#GcKVgb*$TVS0qdgnsRDH-_W?EMy`S`gMpVPeWnpwF*M);6XiH>Y zZxLBT%V7^5c)?PoD@}_(`#DgSqPYspEYifH`TTRIeL@o6Lm%auqxN`WXwksBMag4C zn^(S4tjr3%IVH37$bD#T-&+~y`m#r(_k2yAAyRBCI()_M>Z~!d-oCM`f+uo_Cwm+G zRrLBeoVvL()jOZ))sykRJU+!6Qk{KTn!QD;o^b}=KM?R4BWB@c@55y8UC0@?VmYq$ z={gJV*&;niKK|_$+`c*$vBy^=VEyMJLDj3#xwWjkpIG}#0w0^aN)LP7z(!hq(K&P`+GekWt{5a@oKq#%_l8=b7>ft1~MZQX8UnUlThB z&Zta~fid_3P6vAc)+ej|)#>H_t~E=}DA?eX!#GJxBkmu805%9$UJF3C zHw;b$7XFb~&CYPCW+rW00qbFbWSAQR3^#`(*ibhIBSiKVL&TD{(?vx`#H2gllXx5d zT1ap57s!}NKG8c=kvFaZUCV|v!$)va;!n=4nA(y9tWn2u}M5X2NieIsyrTD)Ze49d)O4Qwpom+Q2MT)GwNG zo?rjJMCR)-t?i#8)3mx4`xip~uYaAFdBL=&VODE~-Xat1^{05Os>bn3oIp7e=InCJUAyU1V^i z2t~fU{)M)s%s77_Rolio!R|}OlTp9OUu;Nxq-Yjhq1;8qWsS)iC5Y#2mk_8pDl}!!mYEZI`p)JJ3O$ z2{1a$G>75-;J&E{Bp&Jg%079}`B>t-j?syf4TW`Dj&zK49+>qbwtE9>8*XRDkPE!X zbmUtEE5lM};|n^;at;buo~sKQ9%V*qhH~$`Xv!Vr@+YnMi*fBO+aSC%VO7*ms2nM- z(N#a(Mj{L_6S#)IqHzhZr5alrzH$PGzavIoo)Sf3S+5(PShU;{_8{%6n)3Ekdi9@) zwXm{}T>Opv+bC|&OS~|P00;DwNC&*ZUKTvBv1C7`P)EDMdWMYM@G#xc+ufn=iq(V* z{zC6u^3lEbE%DX*49D=N+hX74KH+~1(Bkf6c(!A0NjupZ&`nFGOU94AL;S0YPaf@h z{sUmuFMy5zGcGPKBmD35{!cQ=%lY3Po}idq62WKSjl?pKCRuGb5ai&+o=iH5ZhP~8 zXOqU#53`IjIKkZzPCw<=koH6@TVbB$VL317Dbu)vbqvaFVO| zt`d@tpF6B1Ztv|SV2_!+djG)J(=mnX4~M0B9JbfTkYU}`mc+jtDk;r9vX--Kaj!ikTR;nCLdvxJ>MTtleCB3c{CuS{~|$E1$& z7rb-xU;$=FAV#ybu!pG|c<=(d)nKq?HpYzm`cU5ktT~|p6=(jc2RURRvnq?^0fseK zRDL=kTn%0`+6&(TR=+en&%%M9&bfKD(ELloFU7VszBK%-^`zZ{SMu^-NAtm)$@Tobb&Z}=6h#<%jU-p91dQY#wI{%hT)Un&$O^N5(hapuZ@GaKXeb`P?MS0=CpS%Ruv)K)1`+kuj&}wty!&po zTA4UTt#Xb0?I`Zgi@k787$@{F2uD1jo)+96|B(C2p^kR`lV0SsFM7Sf@0!(w8}1Qi zwm@pV`wu~Ey@zV}(_OLef}Z$42Wav3FucC#m36w-=li19lpx_1{$J_E;f!YcN3Hrl zC?8*i4GUYde+9Tj`G4f2M4r0Z-(3h?!`MzSK8j)lQUEmxJ^CLSz6nevEcxH%<8D3A zK)QSAmp;!TtvH*xyZWN@@zfdTFSlduzh|qjh~G->M}GtctiET~fU9k_Ri(JF!v)i} z1~>KF?6o^;L3?e&TP+aRY&cwndXK+X_RwHc8_1`sDC{`s33rlrlQBtM%%%`Xc(x=e z2iykR5e&!g9CmHFcBnO}QDqH4!#Oh;v%Y}DSc12%q3h;fHrkI1uk?Vyg~sX&RZfu% zN>MYx`1#p4v>OFyWDe*RNG0{&Y+p#NJx$mk9t zzgk~3pc1MB22?`n;1v*k!rEV(IuxxoX#oHOfMtlaBlW8<0NiDEh(VOrm|;X8I3g^q zFuo!kO>9OmdD~voQXelCP>{qOD^JBdD{t#2RC}cA^1x0b-B)TotgN*7S@cpQEThrx z@u14A$!TQpSne3xZ>@S&u++o%j5!6ZBU?F69QW01_ec^NJL0F2CxDp6LBdlmpk&eW z_B1a|I1*x(utfctV)x}yC!Zn8op_Dq#7Fw#2os@wsx4^I~bP9K@Miak7oi$z5hU6~hRU^eU2folHZC&`%!e2Qu@?X}vc*Eu4jjuOzY6PfFL23#ldwT&9Mq>k7nB z48OtD3Wv}XK_&Frq>JyHE$=6AHw!Y4IT|M7G^&$@@Nn#K=H|=DVqpPnBv|_vCUXk) zIt{qiDZx*@qW9!88s5njI$4luCKh}@eWbWDZWT9# zSo`xjFPH~g0d-DGGyZ<(O$e))%dL-sL>vg>{S!AY(9#*h&BCvYG7k}&HVl&~pw z0}b(Xw~K^`ZXYhD_m31*C|c~dF^gPY(<2JKz3|1&k|aMvbl%t=Ac@05K9OH3F)n$C z0rRhW$Qoxv=!#74847!zo++vkr%lWz2r2 zcpmw6?^-vKET9nsnLehZ1)eQY>WYjKmie5F6FzEFW(`)o_iq>ruq-+nF7HJl_J&iZ z;H&8}Q&RTt?z9u1nb+K;vd_0afIcD`baH@ZP`+L07IaSErHgAf$3EGwqiyck@vdBM zxDL*T{ht>}tlcLWh+BF&`DQCGL87=CwsBfd-8L4R&VRjg<(=%tREhy)Uz0U}i%xGp zH69OiLZek`Q&%(LHkTWebqY~ZI#qTGQ8HGJ|5`RlXSq;Ou}yf^OvKx=uuo_i<3V_j zzK8Ue^QBpc1YA5tm=2-vd$-sp!)myqz}`DwTxnJ5+Hlw2}%EsUAVvu2YbtRi|KL63TIDeuj(c#Frn zuQ?IX;hwmd4HKO2I9TMsU)+N5p1_=OOJX0a3@ox6Qc7 z93uCWm;ZS1?p)pGpE>i;K`@25-62b3^Eeuu^WY3M&jdp75g=!w4VAcW%f>&{R% zOY3Ezoh)ULYDL+5kiq3J-^*ag&80f1R&50u)U1vhaIFv*+gdc=A;s)%!1kFzWw>9N z{A!O-2I$=c7I$gfb0C?q84p)jgC$q!D1PA z^yot#2?pcxDW-zGh?OQ$qjtr`d(ig@KDNo=O+2HQw3OU`Ty8=*#$j}p~0ezx4(uIm+mbRQql{KPH|W}{OJ zQh(X@C=x~7ogk?BhDK29)lMke3Efnd4mHJuj1|EL$y!y9KmM%(Hm~tb51Q`Vw>8`U zqfT%C-=Y3rAwKO5?XJ9xe#`mv)0iv?GC25K5Df?@NszwDW*2=0=W(Lic$p%&dZ1+P@Q980YuTSn`ALbUt%gc&W~ zf<)Q6W!ka#b5|EY10Ga{6m=C9+cHgU?V56Ldu5}ygU)wWRT~#Ox3uT2D_YW)0{^xi z6TE?VCO1^Tjt*5KE z52+poHuJ0VN^G|*WZ`=Dt{%QxVwR(o+Nx@5t)CUPcZrpe+J)4s#nh|++ppSuiq%5O zE2lGIID86}%IBhTOAZkD@uPeT=xFBvX(9dU4N82b5l-;?{sOs~sW)t?)SrZPB<1K@ zpW0yrLIescVyi(2TCkF`-!)y<#m;LEO5TTTnRf|~XqzMCJO_x!zIr0xL#bc>S34N3 zjouji@`rRQ>&xcmG6!sV53~5g<{k^E9pRp3+3~P4B4G1*J+3KgVi#K+X+zD-O(d{syp5~$Fm&FEH=Yna= z*9gH^7uWu#HRb%h-#790Go0yowG3py5=b@(p31!tojKD=E1EykGdwy{G9kyMa)aRh zvTiwL&M2tj<6+8pOSg?Aw8?0Q&vvf{MsO@2x5}ryxyoQ)@+5ORexXS%wK=gPr z1B&=Jc2WStK$Z&t0!w?daL~T#c%E>vn)M>yWJS{jV6f799&fYa%@xgJb;T7O2*>Rl zuU=iFrRhw?4&e-duW-#T!JS|$=K%DtBW#W%apBgZx^C*L=~Zl_!(rKQWy7DupOLK8 z5n&N|kd`YYA!P>F9#T8yA{YUNVUhgv=oj`##ASkb?JMBv1k_(k(z$_jK@KG8E$Axf zCN4ZTM_kb%4m2%l_veQWn<`w^QIyox4!WINvqz>M1tMeg{d!@~wmocHx%gM{ zN7LigNb^=&Fh-tNS}(J5BhBs~<%&wM>k#V2Q?p(K!~vm0icRj#F<0l-7Sz@H#1lW^ zFtI(xd%5b6O3atCfHO9MY8MZ|FtDjIg@zK+I2&-9Qb?@hd;~d0=~n2biS6c?U`o9G zcm#t`fQ?}MXg;#{wLSx0xmFk+1hxfe13@EsH00Uxo<=(xm(ojO3C$fc6vpr%7hFIA z+^Y*v*B=u)HN27~Otz;N((xSHg+rl6U?$>6}(9vwr8@J%tQMXP#XAlEkJ6YXkC>M~(!a8}y1!eE^P%ix@O8^0Pz2wc-LiS-32$#+GrHDVljR9MDBoAPxws?x z_9?D)ke1WnW<5_#kfhE+@DoKyS?eyG{qczY!PO06ckh35aSP%t?qqW!o^g_y$)0}^ zgTDj99~`It$-cICQcNfxhSy$TqudUr4!i3oI2&E4y|B;lJ% zSa1I?iG9QE1LaXoc94J#LSIMW*Mmr zQRirc@zU!fK9y_Ve^Oxx$A1rQu*Zer?*4J^{8RCA&gwY)hM zvT7dDrmjUyrYGP6_kP-XWU#8MeK1OzZjL97gH7YZL}(dNG!6&bmf@B0 zpEU#6CYO=fSZMOFEMN%k9xnh4bC>A;r?`b1_RHtUh-7S?MLQF4vSGkErL^DpIarx- ze`URAmkF5WG{!L%Np18{_6$%m$*ss1Fo#FEK?znYwFFwlGu=yDaWLa(V%)kZMyfkl zXAJoNuuS)GZJ!FYLSoBV8>;DE7ff}-go~U7wqswUPol-~B)bKo{-w7_n$}));i?@C z9THJLcyxb28>;u?4a_SfRG0Dq+~PVso)MP>cMeq`pX1tKJi>i=|E0JYchKB9yp% z?nj<$07f8lg(Wq>>(bUGxQRaQYH&fgQJzjVjr<0%ysqdf3blmuhP#Dt?E0i^g_sCn?#2 zXMyT|&oR21#@M_S45lU5Tv!!#3p5(=1<{=v_z7t+9f9GhL`A=R$Fvp2Fpwx|rxi9! zVa1x+N_%%B-2NOjZgSKBYkF`ZNmk?$605eahBTsSUR$e3ZG0DH(=6Eb=GSb(6Q6lw z3G9trCEy^2SQG5p+9ip^U8@x!Z(`sNtpRfDipBa5*H$N?9I@Tl5|8pk6Hs=6^uLpe zXK?yTkJXMwUAd!DCPqNuTg)B4{>&bqzB5YtHI?+sRK_;9VD8Y(n=>ivV3e#ENPoQi zQ)|@gb|)Q0Sk=pvEI{DQac_d7<+@jB9c`{!iAJTAZJ!B+?5FyuyeN0(NU z;OMVftUWSH98vZQDM3SJCr@ZUadbZ_6jn3{e%Vp_i3Q7h64Xc)aO(3VQ^}UdL1H2cKYVKM`DR(`N*SZi-RQgLvu+V4F(r2&l?EDiOPxZm? zXBS1=w$a7e_wuWHBgDdU%D%7ZX2$^sw#)>gV=p{!6m%Aruy-%ITIIInDkF&3=}6#N zMN4ECOPs9cK+ZDH>ffg8^T!G&;l~axmSHGDY!1KX?_|8Aoaa~^&~1PPIxWc#^X`)$ zVr5tkrfhFJ1X!v2kzl=(SSz63VJ43{PM9rxG1$KO2Z$b7e&$vDyW7)UcYK0%Ib8Z! zPoCiY^Tm&)mg6EQCcrr z{;erwmyl7Meax+o3_1c(-5Yq%igmIf=r&VkT+ngC1BHabC}jg7fGn5R)suUc+c4S+ zYyQAvi1NmH_;xu#LlCtDo^U6fb81+1IuFgGht>vG_%FoeVTQ5%wK~$>9mR&E74CK( zU5YHYQ0&?$X*|-HXP~9dHS25aoJcEIjU{V0Z4IF<86jdK$>z{0>P&qG0;6O!p$ZB) zq4uZW^xM~)_Vmj-Kv~pXcI+9gLq?9!;V!?8p<$v;O0b4F;>K2UVfPdALq{9V_|nfj zN)#nIjwUnCA+&_isTr~M>rZyQEIm8a@8sFXO1J~0_u_#s57-9Bclfl9iIlP{!_It5 zfSEzzI86@-Uv4GLrnOEuB}f+Uz6nkWe6iwToj()S5&UL~URtgWR2qY%qE%j9Y43!3 z@DbMF>felIud-*evLXis6Pi|4B~@QO)NB`e9%UutH{eRgfal7u^ZP71H2bsyqK!mI zw~&?NG)RpWh7lBP5slyi*UYh;(R5TpiiH+OkuohVQ5P#KMABTT9VP0uQ7?udMh=~H zs<#r_p136l6llwx<$JC%3pZ@G>LpRjhVXW%*jKdOT~xpCsjmuSp8*D9vFzza_5gWn zOk>I@=oCXG$4J_7N;cB6HNpC|l(!gpFc`!+lJ@nG(F^EE~ZYXb>ech-?*uyN+C(8TjMh$|A9 zwASN_@Gf*_n7WR=EmS097LUIjD2rCE5s%Wp4XHb>78SX7`Jj1uxQgsB!EUC9kZi*y zHQ3wNuCzeBajyw!MPJPgYY^$@iZBSJx&HM&p7~oW5Rz?>9FFRdW7t(8dhr%uBjD6iZ`2v% zr2dWJkQGfq}cu=rSr;XpEz0YCsI>>eevlb?Z0J!}D~s#pVIObd z6Nb3c^c81ZO1!yY-#dZaR7lV5w?FeTBjE31=?r85iJ1mb(9|uM6+h;QlWIIndhj8{~vYuz| zveT$d(^s|LX{{=jhPC#)4rM9NgwnagV;aeTefpb2n^231jk$6Llu3-<*`Chn{c+n@ zzcrXN+<8zWHkK1Eh1W&*6_4DMz7?};(Mzipd|&c1ZcF#h{Wz@%@zKM?hoXisvQfRB z!(E)m^|23+8=AG*H)FATyT8~sI#TO7uZ0EkDU8x<3~wS64$RiO*k`wfx)SXoZ=ac@ za>{znq4S+RC!|z5jP+X@&U3GJwqx+bp1ty08P*%pqkP*h-s)6f&R*_{10>3lvVF~$ zTl`_jY;;Gj<2}LNzd#8Guaeo;-~P_e)lL2}2|>9&P2UAxcryhb6@|@?(u~%bEFD!d z4J7KqYo0`dshgdeHm%P+* z#O$A>Xk{DM!i3OCnye}5z{>A}()~JcsWk_%Q&R<^L&OxazfVwy{(0*Y*>F1f|H!&wo=_6+JCa_o;1o++G{(~d7B|ma5mVDkxjYM_Xg2Y! zrjW$oUQRdUOVBMHSyUegY5v_Iz(wIbUbK-6O8M<`x-H}fyQ8+~ z2xQTSrE~2*n^46!`P(Gkx7{&zQg2H91kC{w4x&Of@$3;-@*OPO%kN;CglR*lZ5+X1 zcS`sbW|r(*ff$@s`32sJGDvGl9o3O=QLuJYo7`M4QM7~GBa~qerwn45oYGA3 z2SoX~3Rd$b)LyJ%?CQs4)ECS=Y#k|6xBg%?BtD7_8sL0X1qf#$)E;weI;~)K*Y0mu zp+c$S2s*jLFyjJgEj|6y0=jxGuXn%OsNH9mS4{VF-R~Uj1yw)`TiZGqcx!jI$m3+- zHM?hJCscz4kS>eH&Q+PuaF0R?hlXK&3J_fCSLo=;aB`da7qzkXFTUfvER%M2CwB~Z zxV)8sb!|zJX@Phdx(O?%Q9FB(y6tJDU^s8FqI7jf9=oJ)=*PKF(A5!QDkvv2XN)i| z^}iW+b;r)-w}SpIF6*PStH+)~#kXvqw`7p>E#EVpFex`6f?u3(B^Be8m7C)_%{EVK zO9xgzE!pE3%)+A@g_WR^Gd;SU-ph{cR5(IiXo+9w+CO}>b!(+P2`9#L71a!yWm;!- zBN|v6d!$~%V4XWPw!0YO|MsVQlA8E=xs+i5(axURYY-u{Lyd0=;tftnYB!kp=Go;9 zXP~V^UDC9omST;|y%}_T;u%`TGD?>BBOS@C+=s6yM45evT#u30U7K&57+?A824?57 zVUis2p(vC#P8QpJjG6WtUCy3$~ZHJ3o7#=RPi$0SK~l5uoFdls9&IZ-8Mu?>$Z@ zPa%qdpFcpL0Mg*Ll1|Sk00)&m51j$lUQ$^b0jrdaUa(Crf>-3c&Ma; zZZMuVhG>27BbgQFbRK-8>+(|YMv0||AoOgM+zBGoOV2mTlU1Bu{}^>Ywm~TVMd}+= ztufYX2!hg))KrSy+F_lz%+FKf<*uDUw!@edD``@7G9gU}${$Cz}a>y$_^UxSd@{5+qI03X>iL64d2zRB5vUR1C z9Re%K$Vi_K)m^wO9wPY2Y!1IMGxbNSyO>sUQLFMEO}4Xb0&x6XtGUQkd0AC+q$<>c zamYuP%SM;YhL+7nmd%EjBamjH`5k0G;5*rJvl*oc>8p=UH-v3a#tZ%;B^Wl3jQKuC z^b+TZ{ysY2K>Og+N>x)^Z?-r*H=n&6XbRZU zEVp=Ur5EBtwb9JAglr{RYMR(;7F$Iv`!mY*O`CM8&P-b<2#wW9x!7c!%hl|}pX*gv zm1W6vO?@^E7#vp}%TBC;s1~HZNFSFq_H1v2C~PXc^Zg{iVe0!M*@!ewS5ItA+VOy6 zapk4Ny0G!&%5=07fhkGs?{lLrs`;vWSAw)q2to#0gY(UJ5Fj3)?AbV<^o^UBdp~#a z%nk}p<&Qyp!Ni_whDC~oD(3)IQ;lP>N^IlAJPTc#Y!$9iOP(=rT!=#@E+VS=2d+w< zxL?v=9`0xUv2b294s`*L^6UxHDPrtW0X%`j#l<5_YyXy>UCXh#yr2Py3=Qqge3M-5 z&G*K^s{bh#G=P7P-Ln{yBhcwa?AQlWC*ljn_N)yOk*~`4M=C7d5UdK8EM^-1!?J`Q zj*wJ|{aM|4O7^Wf3}QK>5v=OBVBj%`lFs+Ae7?|Np_Y%RzuuLi01H74V*BX|(;pwb z!0Lvdkc!g>F5^=VbR2`Ei2Y<~u25TVi$nYnZ7sKPX@0GDa#_@ieo!-xCJ@ZrT?UW^ z{qZNAOtbvpn4Jg%!(sY$Q5rkn)o=srhAP!Y=X4|k!N&qyqr-J%wj@$~WsUO3E$rkxLA6*2usawHR2W&MHe4lWRAZBC71wDAL zQ@6dL;D>Af^m539yA|NNnf5Zo3%c!9inWaG8i_~#bZOwWzRF%3fTz|gSNW@K*)FY$ z0dBV4d^s0(@OKI244M{VH_7hBt)@lgWQL?p?~(Kw2%l;br;V6?^P0LORXJOA{X27u3XpyB|$USGFtmGd<4} zKTOx2k|m;2rY!C+G@}z$6u~|gaRErUL1#dSP=CarK8ooNJcKYqT#zOP97zWfngNA+ zw9!5oT&app_q9OOzNjPu|D-*^sSqoBDxQ#+xhOh!eM5!xtpq}a+Q^Yqasng>?8dZV=!tVVZn!% zD3i#*X};sk1nqI)j~sx8{H1Yfr#N3klcb5@R2MXEjKGOlj8K;tp@@N!ElG&)?QfC4 zM}muiCx$7!kTbtiTtOQ?#-AX=z!c!33zgO`Ja)}^FLa8lKb9@?NC#T0exE7CA~k=b zOl3WIi7)k(y%^@C8Q^FuEoX=>5$S2q?@uKvDRtSiFwowo5{ExnNY{=wHgx#TQ6G6& zm?>TzP|?nWkl`+xZZ*~-DJT#xgB4b$WG5Kx-%_gU<)wH}~*@A9iur+bO9|Kf|#|UwF zv7qhoO)6Np=v@xByi%;Z?XK*_T)g93f+OQ zbklX}1KYd$(qk)Aq_t=-!L+cwOGQNDEV`7j5;7Zn*O4BrJ+y;%A)&C+FVT)CSr0N% zkG!%6u@-9f1JX9Q$pKZ{-*zoZYgg7f5ON+2a*kkg4h~-*);qA~7Rz%!R7)bPZI9(4 zfvIH=*LrlZ9_-?drt-TzH^iMK++NI=t-I}lwd3RsS|#&bGnP;h#ks3%peRaT4q)Dj z#G>Eo4qTHaj&eJI{*-2oVZe&`)kjQnQrGwE4&72J1QDuCt->^DcGtr@#?mz#f_;y@ zB2_fGb-%6rxX)ERq)v$zSQnafx2e1+ab+paFWur5GI9cCm{H{)d>!M`^Q=?iW4Btr z123l7dDCxQnYyBs-37$@ouJTpAW;?$)>p!}ddxOfG&sHF`4E01uFks?gSQmskjv@197^dUyU5rd znam;1x145@L<(*Jv2IEIU67&&J`CS)!ic=TneO}E^CF@sAPR8uF@000P$-ms9c=lv ze-lmtJk}7FAj#HnhGCFqaqZW>B>UVD zf_;Kh-fNPNnx)iSO{$&;+efH)x#I?DQk!{;#dAl zZu!P9N3-q+6N_Nz_dgL1hOG-LnBl1O3zogY$fJ{oy>anSy`YPCD(OLW^Ok-|s;^r1 zTt8(qA0e!V+77gDk15#M#5x)@?)C5dNLyeal#wAu5X#zACt6Fu$Hl_@I~A}7PI3gHoQ{*c>2l%br~!B zRn+H5vq@ahvLhP|7zs@arsel3;D+TWSzg*Q`9?3Xb9|H2g{%B4*)$Fv!w2*nHI-O3 zlwyi1N?F=rV7i7_ax2x^r^*KS=mcaa6b;G&2u8ze?a-qlW3n8KoktS((FUT6N}SQz zks}OUS*oa78>wierX<8Gp{mq#^ED1E3~d{KmPGiRkX&)=(bPLef5uZe#HeN*D(OqNdZ5lLKQDs2?Ti6=#fWHui&n8qIU~9mhLABaNQGito=W1738q_fa z@=&b^sk8Js6(Z}R;p}?tOS|h?2gVJXKDXEpmJQKT@_bEHK|q~OC+<$>w~nD?5#8To z5rA&ubn{YD=yIP6|_M0vRx~zc93KxcC@EW>#igc3G62s);Xn ziX2CD8J0ZtTS_SkTM`&%RyMx=_&&GiY`ke!pLc~UHy7fP505 ziaBqd&kpkxZp+7~nz^LtbY0sQea z;V)Kmi&};08g9!|?tJC)7W1CnpTnN$|8WVD)gElURl*>s4MEp{nHoM>psNjHdxw4- zUbUxvr_%mI8+LWR@E2umSeW^^7t}GS18O(b<9vAAK-RviyV_Po`?f%9#53UN(QAI| zUWK|17luCkCdy4bSoBAod)k6d4A1QQKJU?STA#{3WHVm{iKNVa*ux6MYCj99^O-$) z1q5skf*r~+f1z-6On12L2{=twmej*%apf*lw9z9v#dX5n)nJ1#tT%hb9&bF^HL30v zWYRF00|v)xA$iEsz0d$S^pgP$Dr+x?;q)g6uamf0{Mx58{#3y}=5mPS{czo5Kh;X4 zAZcwcdVQ?waV|E-exdoIul}#6Fdv4H$RhX>$}lr4$35RM`_kyFg00a>FOt~FmFtho zI7ZOOjI(_K!*L;FF+8%*Cn#y;xcNXngx^CTnoHys3Wx&`RJ{B0*}vHeVNH-Y{fL>I zDHOQK%@sl;d#UR*mFdq~4(o=#{DKLzd5*Hl-j<1;-zK-5GX)Zd&wB-#R|TksdO z?~56_m2}b@A~Z2$i&h5ScPVhoY!IUS)G$pWW(N{M-;)QxG!!pVE2_;y3@V(4fT>uo z`tAkHBCwOlhjhwu!DCYL;3S<9$7WEox{m#`0<|2{kM|e#^4;H}hNO&{^~kbb;ML_| zmuPfjqB^wDV=j+zNW-YaZGA!tRp$)TCKadj|hz-$wO9%{bM7^`zpCJtX0>{wohOtVK73Q(Y$f>QW?tJD*n5AE` zv33fuc1o~zim-g2Ihm!CJRa!6#NuCk!2E;isTjXKlSq8?e>+MIIm)v11K0NvD9yq6 zgCU*}hhZ$CrjBtPwW0wsq+pDrH0SB;L8E|m>;VH~gZs1zLbZTrvs-bl?ADr?D zR&j<;sm>+2bN_V(-7h49BqwQ@f6VA3>F`M@o$fNv?a&q-wI zFpGQTmU}0O9)1<-y1Nr4441A7e4K!Ra0P=4M+Fy zlMnz@i~XcwLs)48r+?E;5hSQaCthHPW9S#O+=FQj*iyDp4j6y--Ak;0_vwK+ljMgJ zMS@t5mssG7DCSNp<_hg!qJTh65fHua6Wkjhyvj9?Z%3HA{TVJ%W}?~WCwZ|vk&TkSSW>zTGlXH7K?ajXNV%2N zOj>apTcK4_WG}m02~7!Q66NZWBuoD@qPa6oF8%f6F@xuv@8`VdJ?}XW&v{=PoWoho z#pcnL>WT4|k|&jwWol6|1GU95+IjV1H#!z??kCqu-A19w?hzD&wysfg?ReUT^el%k z6q(oasMc*o3!g(fxr#IgBi^K1GM ziwsT_BjD;T>)Zkaj};!&>Xr1mh-h;_=Y3ncT?<2S-nY@l&iaG_|B%@wvRGe&9@I*vOOn1=olv_%z ziSmg`O*cwO1VKwR@lmQnL$nTV$+BDU6w?OMN}T%HHP)Si8$@$u{<-a}zR!Yg66&fR z$0;*G@|gp?W1Ev%9xMz>gT3y{BoJ&w2BXYo})tt`@q+h#KxLC7e-SWyPgyd7Kp|= zWSsdmn%nT=-`7(P6HhqZ--^HVOJbYX>!+i(AxoXZ=tYtR<(GFST`wD$P#^h=RP!#fpnRl)6$&?jkysDi@rN=#{EE zo+l3pwuiQuoXS1`EfDGL3Tstfp0aIy)bIZL&J8TQW#k`SOFtC=YGduO(ls#R9=L^x zQty!=>2$%^cDr6q=q|sn!eR;4aH4KtUWV1$0t-W>lEmHXw<43=fs#%{#dJJ=?kSp`=O$1PrXhlhWB8_#?>;49ihA(Il6+} zIU%ub?Q0?}dB#5(T^fMN>v*U7-+J;uS6z;$gy%SYRyN*O8noU@W_hrOkk*(J5_`?x={*=a2w*f+^{apxu zmvtalSbk-(c4%1*6;|%ni#fvcczIXkiPnO+(a+@MtMy&Auf{(FX>WdCc3J7^qs}{h zPVKhMrJ-VK_hT$}2`+urT)$G&^%S>lQhJ9;ZM~PbYuSV3h~==Vep5rW@W_*w|0x=n zh)Y+L{e*njI!Hkg`wkK#pBH0e-SE4p{Y@Xw@P;S9eY)IL)_G~>mfPvWZ}1MugI?Dg zuiY{^cBS~ohKl2sPnIn+rEN>D#lo$-XC zXB)gDIlGHU6CZ7=7+Q9$aErBj^5Q_^wd0A`)sCGFZGtKGJ*2cMth&CndabWjMYdLM zPRXVeqNa$? zOQ|FKLUy_3ukUGDvA9EcA#?a!T@f6BZnNoCO%Hm^ds^cC8X#Hj`?KyBsfJVdYwTd^WPsmcw#Q%NH@*0a zA;)ftZ~b#nH`p)5=0T6 zu2WSi8j0_EhC@Hg~#n{1b88pVrXy`1>X9)XHQF`uD=_u6jd{|1RyumOc@zoHfFeeOe5{U`5oeA#MqO7yUVZ)+MNYNxzR*M_{u_N%gWUYH0zvP;lV z&R5u|eQ4CB?Ni-m%({WIm$Uvmk^y_SDEShpa$dk5_3$8P5|FYWtJ)`X`= z8oz4S+BCSKr!?pAuWoz$%I%Ep@}u!$rIq|=A9SuLa9ir5y3o75&@_(EZ&wGDNB2r7 zu^w0H`!?rRkwNddU;8QU-HC5qz=dVyp{J697<&zsdP@nXVi{$HhOMU$V<`{DD^U7v z(yf^mX}u3dABnVWZ-e=Fb$=pn(nyddw_D?)acQL$iw2K857YY?x^&CRjPTK-;mEX( zI}6^udz8@dB(*xD^BoP6o=}w3@P~rrE1h#(?s^7)TORMLD+#Arxa;4ztAzBQ_#86^ ze3Xk@l851s5J()4s`2ETsV~1kKvluXXAz`t@;A2T2xB!%JDA2q4FqKIm~JWnIRKiL zKKm_-mkR1m+7RXLi3tuu&)9(!O9yS7J3#xPJ$55!>_?WRpT)qA zj4@A*U>anqAG8O?I{-g3mkLXNj4uDmIHg^q_Hxh%L zc`50$j6)r)#W@-&0EhNOPHu<;$%# zb~Phj<#H?FTq{8JM$@l$W2mKqpUiqhOf`5AGAJ1TeL+FTBpXX`0oO$g0)epz+ARDb zL1!$^*B!Xv?(b{X>eH?~116<@W6}|@Da?A1Ujl=?So8i9YxV zINc_&-I}qCaNW{5tHFZ<0)XwZQLK;hN-r3Y-HL8w5vV z02~POPDqS53K@j`4xDrp@ox#RvZ>%;!>H>#{ZL6amF5+Wvu$qTG7DaSNwWa*jG}4N z50#{+HfQ;N?+0Jj$=3}64h--e_Z=f-Dhq(q6yrq6YJtOA^NE1xY=I6!Q;!pnehenT zd3yNZl}h5(o>%#Qmyu%+8f$ADRiyw#37862h(@r{%rQjGFb()gh^g{e><|{#r+BUb zh}B@7utMzIF#ix!WscY(KCbr+e7Oh$aRuJb>X0!8^A5q;BR*WUeH;S3;kq!uVDX5j zw*MExXOyD1B{ISwgiaUxnWmwVhMj&K#mq!&_6QfO-#at*)c_EwwoU7US1M@_ zn4~!_k+0S;Lwh2FF+sD(=(|T1&jOS30if()!Fc`qk7I1sn%?4PPm-uYHG2mL&V$$q z{Nd|EB?)=_IEm%#0an7$p{c+Wo!)aakOr{F0&v*f&SH<% zAQ{GwE)xa<8W)1b&E6!C23eFEFvm7<4rblfs{-c?^8Jh))1_nB_YwA*^wXxGl29S@ zD9<@uvX`P|iudlFNAa0X6zl~ynFuGN<{RNV=Lz;QiA)4U%zPt!=QP1yq>hQOEpEOM zrb^baJ0g4KFeZXU{Cp!!)e&PyV6W!HL|A`hz7f7#+ld{Dy+95VD)iV-hvK|!*$Zbd zkp{{0k2FIW4R%|xS3+Qd-AVc>U>xfruv4)ow`WrAJ@a#@IHbB~hhon&&V-6P|5Kni zWgTaSVo(3fgo;i5DNvk}L9;`#r}Sk)Sx|op)Hex!*@@WGv@(enWc(Z=4oO?tq1bb0 z{tN2jPl4i;Ns}FlJ(nR9N-$@>p%_O#P^*t~$Yjs7#snFdr}R`!MHw(~7!VLB5Rl~fU=fi2^nnHe2ayv~6{44t7iWAQ0Rd6`Qxpm$ z>9=Te&CxLUClC;LP!JHb-)jFMDkmf_B`&6-${;76s3auc%Y@V>F+%tXQX?JS1nvMr zjVY=qMs`tA3m=ZxTD^$A{fkR3WCgfm;$i0M%2)9-2h4L~W7?yp010#K39gf=xX_}@ zU+sl#$OZF54x3=D-@`BCNP_X~7>xvI3gS&p-&^4iwv5~$XZPS=z97^NyVtzn!#O*7 zs4WmT8K&^)B2NSNrdGGmo@wuEw{MRKfu@8|0~BeGua15-m{0t3boiJ%CCS{*Dn2X;fb~7EBv_TU~UN8gai_QUyc}SjJHZ{>y71|Mc2_^6zi=f`HgNnlt|Y zOThjq;baPM0yzGKAnLyhni!ecxHy~sg#yn1w}Ppysj&s%FZ4+MQqR=b#uDiCSHDaB zf20qzaWS{F`-^8V{2epK_Ktt`B-X!e%f;E!<}V({_;(DN+B!M>l`)RLZwz4UY-#^j z-urLZG_eHO*#8w&dH?=9fsUqTrjDj|#->hx;mt4qcZMx(fq&&*uD@^H+4Q$bz+Xn! zf5X9UmYx7dlmGC;A32sopz*QscYf`I1OfS5e)uQk{|QrBdvmqlaAh#I0XR8js_LlB zenES02!NChkcMC!%7?1QH0*|j5i`Kb0N9kW60t@pSZWHVumNU7-;m!wee<2{AbQ?9 zDis{Lwn6z4JR|*5W$xy6-bA~O&EA@$!TgE^lkpo=!;Y5`0KTMJR7R7UrUFp)Q|N6sccIX z!&PyJO7b_oqKrWAQsT$aD`2yunTgk?)20;ieos_bDO@uwV&$ySZaXo;*HIT`Nz%M+ z9C55?xo!KW7Q&doRPSx0=W(jij2@RYRR{lVDa;^Jq+_jK`Uqw?tgNZ8)!QBwgI5K$ zAL9!UkA&O1DXPrfOv}C^y=XOagsN#_ZHYFkEsD|}AZ|>hMnQl!+uR_bJuI`;CB9f% z9Tx2QXf$U!*!7>^l;MM7lf+26%)IAkGa;Cmgst-Kva@pU_GQ>FlPp!bn4h`Veh1pGs=Z` zLc-qQ)ewor2nL$n3FRu~qZbZQ-D7nAxMY<>k(^F};~ZrAl7~UA*d|<^?P*6P@ajv1 z9_FD=|0eoOI+IT*xp)xGr27`2szi@(T&K;~bKYE;BEJRq4d*MH{FGH3QXv#;INW)Z z@?o?whFdIbb2zd<`EAZ4A57igkuC!Hm=YeD>8)lAp?2D>=CU;p<+)jybSS=Yb$&=U zQ~np_Ff0l#DK2z;Uh=W6PXs6ygm1XW(rNoC14KCFKb2&h2HjQT*>34AF`)cV$9D`m zCT53Hom05T&vMoik*t3q{;NR#5frTaAX8FcARu_ZdzODREdMB>e-_Ap)xAH<*uTor zpXKC#2Zf3=z}dy=f5%1szv7|}-qwGORznG#J`sn}oj%tuS4Fu{F>&BRlO{Umofp z%lUDODw7wuM)PPg76nhb?(y$P>k&OG6Uy7UJCLraxC-c^9f~RI+*95}HjN3J^|#(q z?xo85J|^}>!b4e$QzJ}O=9*ZEqP#rp&abpAa|NW4yKtc>h!nIJesoITC=#}x$X7Md z%u*{ociNGCCJLt__2K#9*1aH)k3lt&^+iPIqeC_B7#4ls60v!($W9|Qu*nF8z&Mx!~S*6&|Ryb&)g$GM{ z8@Ptqg9>Ml$V42BA57-R#Fk-hQR)9<*Uv^Y4(FPSFQJVk*;#i03qQM|5O22dW$InW zc#cBIpx*_4u_*SN_l$!`k5vNWOB%R{{vb0OYr@B6nM4~LoE#wEAhm~_h{x(tABf41 zV(~JM0rw%Yz_B!xjz;02(2LeP{FdvoHps@V9p!Etash)3Y<% zkWqM$X)xxYg_4mw!|_D`$Kx(9Pc4trpN;HSlWFG!7?32F`h z{GO?{vB|8#^i2zAt8W9nGxObkOI|wHb#;)dtWx%mwoi4jiABZ$3TRx_ni;N0;{JpI zCJ*HO%x*(inq+hcr|>+h5kuI^Bo;rg zBKV$mkBC}X?eyHg2b*BS(0CqT{(GcGy{+9yd#wt`^NnxAaHY>^VlweeBU%f8HLDx7j?VserrDxJqQTVNL zX$?}@Qt5Z=l}|INaq^TDzv>9rQ{R;`v%EAU!^n_q0cL~`?*xZgn@{Vl&x@TO_lO`0 z+lV-zpo~0r16Opjta_yFZE>{d^u5}(%38Bk%G|A6TH?eSBTF8n`%OtoG%MW3!w#F8 z4L8MS>>ZX+FlPqri*lsq2do2$`)agmXh)vi6RZ8Vp!g!OV!m4e@eMskUnC_cTfpzh z&)e8_v~?QRAe^|(q46Yns975=S{l47;UL4cR#CAO-aEMlQ)X%%`&^l`vuYRUSt*gQ zl^q&Ms5BODGUC!}_(+*GJn+Klf~La<+3=8#Dj%qp2j(-hbRE{}t)cM^dWAmm8>5#N zLqs8p#lbU#p4@37BIFqKZXYzUlj2JNRkxUS^<~k|T}pXsO%7+}wYIJ^9UsMw0eFMo zgHS;aab!pDR}0ebBiht9wA+~NJYB68XzZ1$e%d&n_5bMF*PB_uh*uR?=tvUV8oMBY z4H#h$i@x~6bh?dJ=1uRv4C760P`608pe$`+BLSCuh6gd7;6P)GiT_Y?j4@o-6%!Rg zx8m!`{8)M+1m^(X3kqiYIL!U^V)yM&4uKhA%&#GWf*Pq~mDiX-xArgbx&AV=5Lx3uh%!L6`#e z1)t5jqL{T~IAq@7mIY^nEY9<)l$K&Lr_Q!!mOszWRk>Z7jFTO$^JaTH7#4tUZ)vC? z)`*yN)ho;8QE71yo)xuf8180}>O=40;7x-q{>hCj-woozMxmH77(AvzEZ44%Okt;~aJR!I>&IFN1e;?$u=NX#n4j{4MjvA89z$`wkwMNGrfoQ0WF3{U z)1}O+)#1mN!G|jWl}aZzp>D_pSWt-uHP#3~*GPYO0f>oSnSDlp?tZYeJZyKg$b=-3&#*yz2OW+w6Yt=fQ zRdNlSB@#4~5gsl(L%Tuk4~duC$is~CHSs(|AD)kWh)(+K9oTKK8@zdlQ*Ydapis9f z`H-Y+kj|UmANbpXA5EJoclZ=eK`vi7ss*tlzlI9<%Hfp;9_QgQMG)=4arXcnT5xG> zvM;4g3f&PM&m8!=yNELeQlq#*pI<0j3b8ZKEz(MEA!7w}^7uVz zYW(dra1{igb126rzby}~Ps|e5#hJ!d*U>*%kKuhMs}70n^fvpf5e?@Z2@T=4C@LG9 z)-;+EbkyD;Li-HtLJs5fLcjT5lQ(O#Ei{MDr(N_|xu=Fp&0EU#;@p%(;ou2Cqtj_X zyCx^0bZv>Cg^WjrEmd!AZtGn>!b;!bBVOIxyu!BC-g$s&(cVo=agNf_;?+tGl#Jl~ z+EuGXP_G#&yxeMyAR%oFf7q)uZC+N7S=0Ch0V%3X{f_+HaQ68`|0V@7md#C?PDEh_ zB~HSHu3;$d|JE(RwM6(c;2TcYm^swA`0iQfHhlh*P?$;S#{?6Z`#mHu82Zxj3_t0G z0R3yW>!q^nrBdr9?T=9@Lqg(5s_T^9A9#dnU6fp; zw3{zTgr#W$U5xS7j8~q&f#dkZ4kC8L_l-qCWwsD;*0-YcKrKuj}U8!38 zJ!$^@yOZW0{DqjDii3^fKUteUCe8c=Jq1)Dw4hDjnf!b|3?U>z5D1xAJ>=^ilw7|Q zig_d@l*+Lx+0h+Wx717;!O>{g2#R-*Zwc39XGTw9xoc-*8Qg~+lia+lf<8WP2!@-Cr2|I9y-dZs z5BxeC9k+Rrno<`f8uNY0#Esfszv`Y}>ipd-%l zJm}=&azmzXxyEH=QkYW?FBkvJJX)sU4zfuop`Uy2WEdfD-Ga!{HaVh`D`z!H>XD0; zpq#)|?BWjUNW%;{EI$Z}VSEZ=be75)eRE;pZ zWqNm`9${1m{FE|=&>aM!<_yrraM`$luGUQB(ZLKCE#>eKp$lJ1)c+|wd{yQAdPvFh z(s$0|7Dy_F*FYv0g+${~@}T~ST$UNmE0|NmWNA$h$S9A*lgH*lw__C!_)epfxZMD> zL~WH36v1F(X_~6WxenF> z&9=zVQhIluKaUp~F;Hr_?{|DEM&QpjIdu{zR30NH zu|GQNg~jk~Kr(&NIu3`t2g?zQbF90M*YsprO_%jp_X9N(S(7$`AYUQYE%j*j+fVCX zxR%$Pa%w+sph*dRW@`p`%&F31NjpQ?jFRX)7inCRI}L9vrgnVIv=U?&0u**#aRlsP zKs`GE2QJM^?Vk^+jP^ltKf6&Qu3vf$Sik?5Cbz$-GySyE%l>91F5*6B~W{Mp02AEv<`h5C^J4ggHunqY* zOPsODR4Hb6A>_*Fcd%^le%0oono-Wh8}rAlctPL%3n!ig{hNj4<=W2nNw<4%uWZ(D z?=Pn?-+jDGy9b$6Yr`!EQKG751J{I`x3w)xjrK9cRz{L#Tn42VMaaL5k%B(_JAiP|r|nCa zY1^5o(J7_8U0~cTK>KS9X-Eu$+#vFa`q%nWQF?!91UX0-{6P!rvXb5b{xWSMgIMQM zXl$e`z@$78NFEp2I39F~qSV+N>L_{alNn~(#UkuD-&;IAsNqJ=-*sKRS1br$;SeCq z70!l=oRX5vauHW-?||hlF6|Y#OS3^SK(1t`$(EHDy4S!<8@jpgj(9nnfkE#!hI@A* z>S!HLGL-X!coJz9Z?}p}Y_42x(N6Q8%0WU&RH~OmWH2c8uqgbXH}`_W{9A0+a$6^+RnKnkthngI3hB^-dGO5y0_QwbaZ|SK$+e`T;3UH z-O`?GY=Oc8m{p8%?{axJ-4gf*6I=^r0-#*v@|s`5Il`c=_b||izuQ8KYr>FMiDTpL z#)rcip4UE;emKb49%Z{pwve^jQp@ZGa~ml5YgXZ-I%-?*#^}?KRn|N|?!8T4tC9iZvW{(2*93k4`b`_%XIeW1H=z- zN^M?BZeL1mcUB>OObz?Uc4i@*ne#dzp&RY|{4m}rD#?1tmy)Wp9y8?dRD2TRRVt&T$O z&IVwss#A|s=-(+8L^5&H*hfKh=ndZNzObXYz)IYd!5dtx9=MLh8L4_zaxbH_WK1Qr z-xhWq$<`h=Gs!c5jfqPpW zsL0U~FV8)cSzWtB6U81dDIzWGm|}$wZ(Z9#@7;wvaZ29XiUSa@mUOh6rs!^>dq?wD zWKp|E*?V^Mjs}v3vx(dV6+zp_=CEc_v4|#}v1m+(3c&L#Vo#WgMIOFpqPP)YlZTTG z)HGOXiuEGjaJNOct8KIJjlEA669;5QDa;k@Ty9}#2TMs&hVdIdO8Wa<=)(aty9eQJ z%|}Cn6t1YRD}eT5TosKr$nR-`Oh^hQ(Th~&h6#W+c0WsAUAHFdm#AUtzOX8HMsc7} zFBe6T;hy_?bv}D9+!Nn8m#S=OQwTLgHgiNrcflFEtUB}}3N%guvxpcwK7sR~RU7?- zy`P2WxMZUQPrKw+oF7?lpI0LLm{FAB6=C3MvyeT1?0rj6;8q~;)@$nx{D#hM zg|%vv%~29IaaOLnROeSxPPsX#f-Ho$stl@Ed zqX=Sj>?k}#mU;Fymk_RA0Tku5XOkyB~&?9h=$dn<_EmAu?4AVptB*EN#J$xLJFVxHl;1`@YS9X`NBdCZF5dt2V$ z!%@-i1Z4mBlh2>KQx$s`M`KeFdpl=v9r3R zshg>zxTTG=spB7Msa<9AAG6eZkX@@{n4uaP67rrz_f}t@e>J#&B1K|}C_KeR!Rn%^ z;Zk|4&Yi*b0AW{u{Ivgc>F;rBynzf0_u6o+*UNsR?P=p-JpJu`_ZAbxt$NSs%a`C- zMq}mbFq7J8mdpS${Fug4G7s@a<2c*dYnQI&$MRUYa@nKNWB}z&5ej7J%qOwv*|XP% zoBKosTp=f3n1>-5SGM-Nq7pgbSXc?e=>}ei4QuM?J%BdqXl*@cGduo~i5`)P_69PL z1`vNUWLWf_&Ji@v<>IBxY3j#Oq7@bj)q;pZDn7bp>jinHiN+x4%dZcL+OaibmJIZw z#FN8g`o)L2oH%ia4)2XB!>=r(_PV-gDQ^&EsgjHlk_%ZtkLZwa8PL(UQO~l{*c(JD zN&Nr-O9V*;8dFp$XobRX5<=Q>y$IzN!|wD#$t$!5-jvVv{p@| zrRU&ial_~6Nyyr*^x!whttHM0>tv0%cEfDFr;u*MW7jNO2Dyzvrd8p_?{83EzOY#5 z_yPwfbT5hX_E@~a3*6g3+yjc|E2#v46d4LlV}irg>%$ps6II*syD5X96~B1K0Wr3z z*9%MmE)m@cPN$Q3Q<>A&CSL{034PhU#jj3fivlt2%c3` zbt5z3pT8xTPG0yGT{~3qnV1*c$~`O^C_Ef8+HZnk4YI>i`|W$u&nEX^W-VuUSp@sC z?dRHz!K!fBl%C7f+6L2)0!lxYIMS1<)|0q*gY-q@o8*b;Bs?`pPkk+?-O03X8crcu zXObej95b~5I&#QOSwV1sQ$KeSSsgC=+l4hyQZ{GQC@K`|ZDCsIo%DJaMpj=a;cx4h zIWHOen%xk>Et+ZMCKPK0VsB@Gg6UF7yL89O=1Tb^7n{xG|Oy%aG|;<&6d2|P>-7lE#(BV|{ZHRQHT&-|+HkVY4wm+Qwa5dv}zJvNzH z&$baIaX#UE1fd3K*@2>{mPjbm4JHsDJp#oM&yuC?+!A>V6$W3Vd|nn%5>}AY+lSmU z5u7wDt3UjcQagMGdd`|y7X4%I@a4-U+VNHtI-fMv8@s@u%63x}Dwot0S10Zmi&a%x z&}^BxghUC7%9{6meIfjERB5pTAW>!BSuini^F!FHT%5FX$V}wxlW+lkaodN&$`x1$ zuj7pJIR8>LKYV}4k3~EVxuu?m{7QfyaF=ibq-SGO{*w<}8Qn*VJ4Ruwl1R8h`lHFs z2z^M!4NOg?N4(#}=EV?K!1(LDF-XIYWR0wnr6gU1<+Pn&vin~TxEne|-m{W6vo@>! zd^Pr^pO0W%8Hp>$j{9Cw+Bb6+!0Z6}Uwpx$e?+g!Kx`oMDu9-*Bi%b4C7e75^xz7Z zy0_~-g=~|f(GW86vA2XF_s}4q+C@c`8_@+S9F5QwCS$XA1o((YR_FaF)2!vg?;fAvJ2(&nv>hE9Y&KbQ4+i%eg|qj@qrQf3bZdz5jeydmgMf%FTa% z-1uIUB~aU{3yyQj&EYjMan_dXap1ui-}(OjixVXIio_Sgx3xlJ{;TCd5;M$TxM?YwvK;+f~XW7COXt;;NnO=Ah>dW%LZ_aZdhXzYe!Q`(pGF7kcgc%5B8 zWQWgafevNL-A_7c9d*!A7ZO(A^|vHr2u=w3LYVaNxBV{$4Pzy6-tAnJw!G;K&~^K| zDil-1Q>|Ja8*pNN``TQ5nGD+0!2zAEMknmm*bvx(P#i=)&6c?RpuzQ#JPt^~36;H|<;Bj$sO4O_9nmmt z?yFB5NRyK|=*5g$j#{1_S>JZK zdL<7@;VBa*04H$GziQ~68q~Bxat|nh(p{d>T28KOMRZtd+}kbPo@NPft1OXS~-h%Wqi**Lg1lL zame}<`iRwV_GMoBTi@CDAR%w^DL{%D8Of@>IlD4^YtK6)*SzFuzt$1N=4(= zqGWVQj!jDyd$q`$H(n@UvZ&-0!3F&RVm`yw%?NE5Is*Fc%%XyZbTBl?D`m@`Qt zjHVJWdg~8;Tsv<|U%8|PssJJX#@oQ<@?Z#Q3Xh&bhr<(<3^7qSBc~ODUOUoV7DRIZ z-je8lPK->&VeU+l)uEDsnu00$VgA)uuS1%*p=E#klZjG?NL?zqnRhRx$(*X1nw@cW zY*uBtl1G75SlRRv0!A--R!~_1v7LhhAg`+xWYqjInJ126P%`{ zE>m`W>n$F!H?(z|tZ=b~7%cF8JjhliT)=cCOjr}f3f{Nzx zbGqp(NHV@guJ*0?@?G?$eC$cNI*e5c%bKeL-S&hp8L=#Xxaas569Q9v^QJolnQl=e zUVH|}A{&go_5I5_f^52JN6L~d3dcOjAIn7AL-@Uuo7T}jep3lb>h6dHJ9GrZ{)0^u zGX!0zJzmm=`$#v5P;eMfXxn20Mo=Cg2+`BRh}ca<$gYqt*Kqn+;QDdbzRz4RQRRB? zkO}MCGd4|u7@@}MD|5fv$Ll)goqayfV$cO&+FxfFW17Due3K|A8@$YU1N-+3%&H^h zdir}#(Dv6};c|6r6;zGiM1>SofEqOn#&uK@85#Jr zHh4d5Zbi^{qw58$WFSiHy18Sf z-mFottkIW_!>-G3?>D&LRW!qL#S9BfFj=D5@Omfc80fU-!^VctQw=y+SnN|xCCokToQPxu;HOm!HfbTDpbhGpd@`5Vpr1DmCXlavA=g3yly2TKovM4X^0y=by@P|g3eTo z=Z7@Kt7B42m&~fWrWS6^rpsiZBKp&TQiZDZdO=#Pcd7@pyE@D$x1ifn%3{?rhFb<- zyx}x#;Bf9OEF=oQc$?3KK4A$TDF@%f9E~H`rl*_TtP)R^6Z@&NuT&C;arp9U)lxal zCqh_mvSZMx<&;UEv;oqsE*OJoM+-=Syf1={$TFz(UIP&F7gU0v=aZ-N7t}-2_)dcXlMjV}Eoi^iMH`6VNN^A~xHO8q=^H)J?1v ze@|7i2(i%5HCtY(K{E!6w&3#1!{_p^Rr00=dcVwAJ;L;Y5|3E*a)0V$ih@!t9%6sgl zT%w-BSw<5L<%ehDS5b2iH2&G!dbuTIfc7w(w=qwf!z)>p`O^CLbr7g+!2PGst_yg# zC14%XSM&s|*bTbW?SOTELKcW?2Y$+!2Kckj{PldITI->yJB zW^}f?gK&MySb zg5UAn77wI$6-HJ6BSd!R`jNfiF|?*<3`xV55AF<>qZSL+z1F*7U5yVdw`Om#?lagx zzcvr~f&))LHPHT%|K2t7KFAuYbbCgo?mlQyIa7pPmml{y>NOxlQzo#5lzlBlem>^y zsq!J0!8YKVr0*w`K5Eu(tuV)#4ESq)+yTq?Le`NY=7mQX4d)COdRg~4P}oLqSSz+u ziV}2{h)%idkq!Kcz|e-^WS6LVv?g4v*H~s`pIP7Tp$14?Iy^HOkV8qXgAP6%h8Rab z3OguMc=W-#Biw+>z3O6JS(*RAk5l}lt55ARSg)fQUrC3fxJb`2~k zgo1UUo_b~sc~+)#$cqd3!iDQ1h{_)hDf)x)Nc#3A-Rv{E=00|c-{q${mo2n7#@R~a z@_ex~3g^NT-2IzN(`Ud`JPoBEPjSJ#>O-^6RDMS(BM@5j32k;uZJbv+Juz5f#** ze>(YZ^tXSJU7h~uZ*61b{_&5Mz`=aBDPbL-5o98pD$QDWo5w^F7eQv!-4QwE)#AQ+ zO&|zDAaJEfO{DEAe#6_|j7_l9U=sugYyQa@i|;_(QO08W>Va%NpH$ung>Xp9LQQig zkRgAh%^EWeGf0^w0lMb(om>B?u^jnJa<_Ys%pMNwut7XF^x&3oTsT#~GB06B!nK{9 z0Cq<3qJj>etGMY+RQJ$r>z3(bwsrK1*fE(0e*PencUrK4_X#2kZD!+Z&sH}^bi zJI%#lc0s@D%dxG#4}7lwTGX~Y=8n~W6JYbdM+=R=KUVye+ZBJ4Uu4XGIKN!=pGO1y zBD6A#=rklSek2&wVp=B}vP>OpF)3)>Xji+oE$z0+Hg2O6Xm{qRR49ZIlkZf!nYPf# zuUk3kvW|ymnXHE!-2Xfpfcz0ci2(_&FXqszMwS?{u3b;y%+@?dQc10M1KL?WWcxWY zh>)e^9<&i(CDRCoU-{z1)0AAxkFb;+PTv zhkXNyaj7G?hKOimM$!XfYY1mXP*IH5NrbnKp)G-k=y?l6o=42v|v5ct@&0N|I8@PeppY71B2C5jI zux;{gogWAd(4|Lm(!DvRfihandPgfIisN3uT7ke_g#Isuu3<*4ZiI16M+-omNjmVK z{!CXI?-t=h!MZn!OOsYAf^Y3w(IO;x`GHoyGWO#s?2VLi&H=58=x}~Rx$7T2+W!EQS^k8wik|gv&X#|+uOQSK zx3qkqQauufluH{4Tr42PFJ{F;Iy=+GjzfpC_ITpwo1P!xmcL*ZA^FB~UqcZZVa+HD ztJ@|2;aDo~@AH=zge~R^3?|Ae4k=PgDXqj2{l?0{C^C3zJSwT2D2b#!$>_W#;M|2Z zw{)=rb!tqRjh)NA%L~_(IhEov2}6g070)IB*i{)x*Z?ujPFdjC9fq7JV{5Y=&nNAxHAj#b_3jZqD)Mkb19&|w+S;g-Ccp- z_qi`(cB1fjv8^A4VORPSy6-u*3@mVdRka%1R40&-t0}d_Vrc9#t`8c@^#jqf%5SE7E?=B}GRY_j?$X!yVmZ zmQj?!57lp1*g|i#7=kxe2!~(kUUo}2jZ@7(O@6%tWiY!&FOyf&zd3TkJjq7#?#>rv zZW+Tj!zzt$qYlc}>vgHXXmSX+Co44zGERAlNR$5(LJGwkI0T>{H5im5xLq@C1X9Km z)mZuXeEN4dO30*w)%=Dd(Qiuje*%uIf5I{G&vUGt#C(^)uupJw?}?j}o$Ip_l{K|2WBNP*x7{U9#m!<>tN3i1wJgTfDp! z1d-h>_GJjd^iiz-xfSnN1ePXLvf42#6F z{RiWv`;JGuHd;3%V~byo;N|Mt`krszp`5WQrf<&FF_B8GYQP46p(=8Tl9!Uv5J%W` z<*n9&lQeS_ZIhK@3gAptM^?8NN<{YM_S9Fd8U82hlWXi4Zqr1JjRXg1qWVN7#v4~0 z7P|v#BNiNseF$esrn;iDm2~SB|0jd?c3!D@~&C@G~^rm2`AOgF1p#n230T=y;kMs@pj3j#I{ysYbx@WD-g;#(rAPXla!!)Lz0G1WS)y7_!)sh9 z<&>VqXFuB5TmF1})-t@y9@6JZWTDW4C3*eb;x4yP8-d#+it%P$X<}ySMx}raC&SQy zj)WsYB4K+thnlRyX;SBD#1M1Jj-D|ekxTP5m+jn!K!dxB#-qYmDP!CA0N*KrkQ|DA zwfML(A7Ae3=uyGgwZTZRHGwbUtGS=6w6`{xLfis8qLIC!wngB-pjJrKHYvCVHH&aM z5&P;kDy{=$38RUYi2c}+k@=t&1%KN3QbAuZWAw;sHl=6%m-YWK2`TL^5(tPk<^Suc z+UXw+$R9ycuLbR`x?lg1Z4#F%+ffA$5nP`8sV4UKy?y`*F&R=y%ok8B#cc{FDM$*| z-b`NKBKn0Amtq}<;vyGDRVAg-FS0UU>jPIB>sG|hpBwJ!zc$z(*Z%s&|1#11AkUI2 zMe-`@)468fahrL0w%YFf;IAPMnxeqi94lfGg`@Z0RMF4gOL(?~EuYe2a5>G}%HFww zjnKc-B8VaH97qBec?tbu9Mqx0c_&#&@UX~Pe*xVH_er~sVI3ZG+lV-=B@61wpO_x+ zJnTg$!a|mFOaPZTn~4{!+CgS+X}!CzWmXA#mlxH6b)}ZZpqw#{>8&(Uk;(AwE*FIr=FuUv$D5AGoisG7#e!=Z6`-P+SEc_GNX=mUFyJ!V z(SOX@g2f>n8B!I%Wb9mrz<<_nl;EZ0uh3E*p_mlaW?i^Y`~uHUAcys8Yzt=3$FTicVr9Cgf6r|DM2dV!gMv#nWLh2oMSRu=R1GS|i>$bfeBOo%@x z#($&&NjzIoySxfAl7n1IuIDL#SxrQ?I?CSz&R#OkqZ&hQ=ipbIbY!GXBS#Hspj>zl zq>YKoXMUnb?6EXn*J|CQpSEW$R-9bih0$t~ZA$@;Qnjvu!c@x((o6cqK=cZV$G#TV zH4aMI3R%nkYrY2Oq+DU^U_V>}L>?%lu+se;+A~p12~1i=!q|YrnSGjdniE@LNkDQ2 z#)u`8$w+foFARUNPP)i-41_-IbqfY_AU{fFd`q7A5sqstMg@Fu3kiQlpW_6wk@Wsm zH6icGgTqkYBAijf09R6gNI0%nb6Li2i89M(xc*%zZ6$GCV%BYmY5F-&pu+ZSK&Up; z5*mDv>pg_91A|eE5Y;4tMZ3mH`Zulu^z=oiL2P>YGvWPypW)fJqF-C$Q4@*c&i1;M zB_$|JRt_VFqN_T6#p+`hn6n%2%qgzEn2k9KSZl>V%!>m_lV3W&m_D0P;b7NvwJFiZ z1lsJ6VK&v*+d=6rEnx0;Z*MTuU@k646=8nvBl&z5@s!)+&n1~cguQz=Dju&EheyAf zlu7M)3ka0BA~ze|J||LO!2hIiCgm=>?I1O>lk-#7;bupQ?|eWdV4u(yL+OzP!GSi) zg5UF2p4PcG|EcIU3N5sf3ayJ)++BS;q)*Og?Ix_~rmY8-YebCQ3S0!4-Uc2g(yr}} zIbc?pQ9l95^PN{KC}lumW_{wvpd*HJ0f#qxhE;@?My=;XRp_LZ{~GRqMPWpjM%#8> zkDxUjgI^Ek4R6^Txh@xtEpIb+Bh``nAhJ2ozW-TsM+=JG&O2PD8l4uJ743czC&+9b zi&4K9&Lczp5kcQv!?7W1rl}$9_CtBQ@@kRpYbA#KQ3i@joFF0d9@)2!LZ(lf$)IWt z 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 z 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�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 literal 0 HcmV?d00001 diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java index b232f25..d4eafa2 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/action/AbstractOpenActionBase.java @@ -88,15 +88,11 @@ public void run(IAction action) { IClassFile classFile = findType.getClassFile(); classFile.open((IProgressMonitor)null); } else { -// ICompilationUnit compilationUnit = findType.getCompilationUnit(); -// compilationUnit.open((IProgressMonitor)null); openFileInEditor(file, findType); } } catch (JavaModelException e) { - // TODO 自動生成された catch ブロック DfAssistPlugin.log(e); } catch (PartInitException e) { - // TODO 自動生成された catch ブロック DfAssistPlugin.log(e); } } @@ -121,7 +117,6 @@ public void run(IAction action) { * @return ターゲットクラス名 */ protected String getBasePackageName(IFile file, IJavaProject javap) { - // TODO String filePath = file.getParent().getFullPath().toString(); String rootPath = null; try { @@ -132,7 +127,6 @@ protected String getBasePackageName(IFile file, IJavaProject javap) { } } } catch (JavaModelException e) { - // TODO 自動生成された catch ブロック DfAssistPlugin.log(e); } if (rootPath == null) return null; @@ -145,11 +139,11 @@ protected String getBasePackageName(IFile file, IJavaProject javap) { } protected String getSqlName(IFile file) { String fileName = file.getName(); - int separateIndex = fileName.indexOf('_'); + int separateIndex = fileName.lastIndexOf('_'); int extensionIndex = fileName.lastIndexOf('.'); if (separateIndex > 0 && extensionIndex > 0) { String sqlName = fileName.substring(separateIndex + 1, extensionIndex); - Pattern pattern = Pattern.compile("^((?=select|update|insert|delete)[a-z]{6})[A-Za-z]*"); + Pattern pattern = Pattern.compile("^((?=select|update|insert|delete)[a-z]{6})[A-Za-z0-9]*"); Matcher matcher = pattern.matcher(sqlName); if (matcher.matches()) { sqlName = sqlName.substring(matcher.group(1).length()); diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.emsql/META-INF/MANIFEST.MF b/org.seasar.dbflute.emecha.eclipse.plugin.emsql/META-INF/MANIFEST.MF index 60749e0..1c734d7 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.emsql/META-INF/MANIFEST.MF +++ b/org.seasar.dbflute.emecha.eclipse.plugin.emsql/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: EMecha EMSql Bundle-SymbolicName: org.seasar.dbflute.emecha.eclipse.plugin.emsql;singleton:=true -Bundle-Version: 0.0.2.0 +Bundle-Version: 0.0.3.0 Bundle-Activator: org.seasar.dbflute.emecha.eclipse.plugin.emsql.EMSqlPlugin Require-Bundle: org.eclipse.ui, org.eclipse.core.runtime, diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.emsql/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/emsql/wizard/NewOutSideSqlWizardPage.java b/org.seasar.dbflute.emecha.eclipse.plugin.emsql/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/emsql/wizard/NewOutSideSqlWizardPage.java index 694d24f..12c62e2 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.emsql/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/emsql/wizard/NewOutSideSqlWizardPage.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.emsql/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/emsql/wizard/NewOutSideSqlWizardPage.java @@ -704,7 +704,7 @@ protected static String getSqlName(String name) { if (sqlName.matches("^[A-Z]")) { return sqlName; } - Pattern pattern = Pattern.compile("^((?=select|update|insert|delete)[a-z]{6})[A-Za-z]*"); + Pattern pattern = Pattern.compile("^((?=select|update|insert|delete)[a-z]{6})[A-Za-z0-9]*"); Matcher matcher = pattern.matcher(sqlName); if (matcher.matches()) { sqlName = sqlName.substring(matcher.group(1).length()); From 793865d86d883810684ae4cb96f8f7baed4af257 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Fri, 31 Jan 2014 17:04:46 +0900 Subject: [PATCH 09/13] Fixed a spelling error. --- .../org/eclipse/jdt/internal/corext/util/CollectionsUtil.java | 0 .../jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java | 0 .../org/eclipse/jdt/internal/ui/javaeditor/package-info.java | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/{frend => friend}/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java (100%) rename org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/{frend => friend}/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java (100%) rename org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/{frend => friend}/org/eclipse/jdt/internal/ui/javaeditor/package-info.java (100%) diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java similarity index 100% rename from org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java rename to org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java similarity index 100% rename from org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java rename to org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java similarity index 100% rename from org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/frend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java rename to org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java From 0a61d106fe833a97f789cdb139dd2e5e7876c95b Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Fri, 31 Jan 2014 17:06:16 +0900 Subject: [PATCH 10/13] Fixed a spelling error. --- .../org/eclipse/jdt/internal/corext/util/CollectionsUtil.java | 2 +- .../internal/ui/javaeditor/JavaElementHyperlinkDetector.java | 4 ++-- .../org/eclipse/jdt/internal/ui/javaeditor/package-info.java | 2 +- .../plugin/dfassist/link/OutsideSqlHyperlinkDetector.java | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java index 4e004dd..0d5e063 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java @@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package frend.org.eclipse.jdt.internal.corext.util; +package friend.org.eclipse.jdt.internal.corext.util; import java.lang.reflect.Array; import java.util.Collection; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java index ceeab06..d9b5530 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java @@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ -package frend.org.eclipse.jdt.internal.ui.javaeditor; +package friend.org.eclipse.jdt.internal.ui.javaeditor; import java.util.ArrayList; import java.util.List; @@ -34,7 +34,7 @@ import org.eclipse.jdt.core.dom.NodeFinder; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor; -import frend.org.eclipse.jdt.internal.corext.util.CollectionsUtil; +import friend.org.eclipse.jdt.internal.corext.util.CollectionsUtil; import org.eclipse.jdt.ui.SharedASTProvider; import org.eclipse.jdt.ui.actions.SelectionDispatchAction; import org.eclipse.jdt.internal.ui.search.BreakContinueTargetFinder; diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java index 8e50e67..de54a42 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java @@ -2,4 +2,4 @@ * JDT-3.7 以降の実装を3.7以前で利用するためにコピーしたパッケージ。 * @author schatten */ -package frend.org.eclipse.jdt.internal.ui.javaeditor; \ No newline at end of file +package friend.org.eclipse.jdt.internal.ui.javaeditor; \ No newline at end of file diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java index 37c3b3d..2760350 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java @@ -24,7 +24,7 @@ import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.hyperlink.IHyperlink; -import frend.org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector; +import friend.org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector; /** * @author schatten From 9e1ee99621ee44cab6eb73489656c07203783b6d Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Fri, 31 Jan 2014 18:41:49 +0900 Subject: [PATCH 11/13] Support for older versions of Java and Eclipse. --- ...emecha.eclipse.plugin.dfassist_0.0.3.0.jar | Bin 45970 -> 47025 bytes .../internal/corext/util/CollectionsUtil.java | 37 ---------- .../JavaElementHyperlinkDetector.java | 68 ++++++++++++++++-- .../internal/ui/javaeditor/package-info.java | 1 - .../dfassist/link/SqlFileHyperlink.java | 4 +- .../wizard/NewConcreteClassWizardPage.java | 27 ++++++- 6 files changed, 89 insertions(+), 48 deletions(-) delete mode 100644 org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/corext/util/CollectionsUtil.java diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar index a8efd31660950ac74c95736033c64126ae9a991a..6e9ab0de114e79e4273e98e8702a17d19274f4f4 100644 GIT binary patch delta 15436 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 delta 14315 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 the type of the array elements - * @return an array of type A containing all of the elements in the given - * collection - * - * @throws NullPointerException if the specified collection or class is null - * - * @see Sun bug 7023484 - */ - public static A[] toArray(Collection collection, Class clazz) { - Object array= Array.newInstance(clazz, collection.size()); - @SuppressWarnings("unchecked") - A[] typedArray= collection.toArray((A[]) array); - return typedArray; - } -} diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java index d9b5530..e04d7dd 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/JavaElementHyperlinkDetector.java @@ -10,7 +10,9 @@ *******************************************************************************/ package friend.org.eclipse.jdt.internal.ui.javaeditor; +import java.lang.reflect.Array; import java.util.ArrayList; +import java.util.Collection; import java.util.List; import org.eclipse.jface.action.IAction; @@ -34,7 +36,6 @@ import org.eclipse.jdt.core.dom.NodeFinder; import org.eclipse.jdt.core.dom.SimpleName; import org.eclipse.jdt.core.dom.StructuralPropertyDescriptor; -import friend.org.eclipse.jdt.internal.corext.util.CollectionsUtil; import org.eclipse.jdt.ui.SharedASTProvider; import org.eclipse.jdt.ui.actions.SelectionDispatchAction; import org.eclipse.jdt.internal.ui.search.BreakContinueTargetFinder; @@ -71,11 +72,11 @@ public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boo int offset= region.getOffset(); - ITypeRoot input= EditorUtility.getEditorInputJavaElement(textEditor, false); - if (input == null) - return null; - try { + ITypeRoot input= EditorUtility.getEditorInputJavaElement(textEditor, false); + if (input == null) + return null; + IDocumentProvider documentProvider= textEditor.getDocumentProvider(); IEditorInput editorInput= textEditor.getEditorInput(); IDocument document= documentProvider.getDocument(editorInput); @@ -115,6 +116,9 @@ public IHyperlink[] detectHyperlinks(ITextViewer textViewer, IRegion region, boo } catch (JavaModelException e) { return null; + } catch (NoSuchMethodError e) { + // Eclipseの古いバージョンに対応。 + return null; } } @@ -227,4 +231,58 @@ public static OccurrenceLocation findBreakOrContinueTarget(ITypeRoot input, IReg } return null; } + +} + +/** + * @see org.eclipse.jdt.internal.corext.util.CollectionsUtil + */ +@SuppressWarnings("restriction") +class CollectionsUtil { + /** + * Returns an array containing all of the elements in the given collection. This is a + * compile-time type-safe alternative to {@link Collection#toArray(Object[])}. + * + * @param collection the source collection + * @param clazz the type of the array elements + * @param the type of the array elements + * @return an array of type A containing all of the elements in the given + * collection + * + * @throws NullPointerException if the specified collection or class is null + * + * @see Sun bug 7023484 + */ + public static A[] toArray(Collection collection, Class clazz) { + Object array= Array.newInstance(clazz, collection.size()); + @SuppressWarnings("unchecked") + A[] typedArray= collection.toArray((A[]) array); + return typedArray; + } } + +/** + * @since 3.4 + * @see org.eclipse.jdt.internal.ui.javaeditor.EditorUtility + */ +@SuppressWarnings("restriction") +class EditorUtility { + public static ITypeRoot getEditorInputJavaElement(org.eclipse.ui.IEditorPart editor, boolean primaryOnly) { + org.eclipse.core.runtime.Assert.isNotNull(editor); + return getEditorInputJavaElement(editor.getEditorInput(), primaryOnly); + } + private static ITypeRoot getEditorInputJavaElement(IEditorInput editorInput, boolean primaryOnly) { + if (editorInput == null) + return null; + + org.eclipse.jdt.core.ICompilationUnit cu= org.eclipse.jdt.internal.ui.JavaPlugin.getDefault().getWorkingCopyManager().getWorkingCopy(editorInput, primaryOnly); + if (cu != null) + return cu; + + IJavaElement je= (IJavaElement)editorInput.getAdapter(IJavaElement.class); + if (je instanceof ITypeRoot) + return (ITypeRoot)je; + + return null; + } +} \ No newline at end of file diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java index de54a42..221f188 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/friend/org/eclipse/jdt/internal/ui/javaeditor/package-info.java @@ -1,5 +1,4 @@ /** * JDT-3.7 以降の実装を3.7以前で利用するためにコピーしたパッケージ。 - * @author schatten */ package friend.org.eclipse.jdt.internal.ui.javaeditor; \ No newline at end of file diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java index 2006502..08f02c2 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java @@ -143,7 +143,7 @@ private IStorage findSqlResource(IType type) throws CoreException { } String source = method.getSource(); String path = source.substring(source.indexOf('"') + 1, source.lastIndexOf('"')); //$NON-NLS-1$ //$NON-NLS-2$ - if (path == null || path.isEmpty()) { + if (path == null || path.trim().length() == 0) { return null; } String[] splitPath = path.split(":"); //$NON-NLS-1$ @@ -201,7 +201,7 @@ private IStorage searchSqlResource(String typeQualifiedName, Object[] nonJavaRes } private boolean isSqlFileName(String typeQualifiedName, String fileName) { - if (fileName == null || fileName.isEmpty()) return false; + if (fileName == null || fileName.trim().length() == 0) return false; if (!fileName.endsWith(".sql")) return false; //$NON-NLS-1$ if (fileName.endsWith((typeQualifiedName + ".sql"))) return true; //$NON-NLS-1$ return fileName.endsWith( String.valueOf(typeQualifiedName.charAt(0)).toLowerCase() + typeQualifiedName.substring(1) + ".sql"); //$NON-NLS-1$ diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java index faf281f..3a19558 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/wizard/NewConcreteClassWizardPage.java @@ -24,8 +24,10 @@ import java.util.List; import org.eclipse.core.resources.IFile; +import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; -import org.eclipse.jdt.core.dom.AST; +import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.dom.ASTParser; import org.eclipse.jdt.core.dom.CompilationUnit; import org.eclipse.jdt.core.dom.TypeDeclaration; @@ -50,7 +52,7 @@ public void createControl(Composite parent) { super.createControl(parent); String pkgName = getPackageFragment().getElementName(); String implPackageName = pkgName; - if (implPackageName == null || implPackageName.isEmpty()) { + if (implPackageName == null || implPackageName.trim().length() == 0) { implPackageName = "impl"; } else if (!implPackageName.endsWith(".impl")) { implPackageName = pkgName + ".impl"; @@ -99,7 +101,7 @@ public void setResource(IFile resource) { * @throws IOException */ protected boolean isInterface(IFile file) throws CoreException, IOException { - ASTParser parser = ASTParser.newParser(AST.JLS4); + ASTParser parser = ASTParser.newParser(getAstLevel(file)); parser.setKind(ASTParser.K_COMPILATION_UNIT); parser.setSource(this.getSourceString(file).toCharArray()); CompilationUnit unit = (CompilationUnit) parser.createAST(null); @@ -108,6 +110,25 @@ protected boolean isInterface(IFile file) throws CoreException, IOException { } + /** + * ソース解析レベルを取得する。 + * @param file 対象のファイル + * @return AST API Level + * @see org.eclipse.jdt.core.dom.AST + */ + private int getAstLevel(IFile file) { + IProject project = file.getProject(); + IJavaProject javaProject = JavaCore.create(project); + String option = javaProject.getOption(JavaCore.COMPILER_COMPLIANCE, true); + + if ("1.7".equals(option)) { + // Java 7 compliance level. + return 4; // AST.JLS4; + } + // Default return is Java 5 compliance level. + return 3; //AST.JLS3; + } + /** * 対象のファイルの内容を取得する。 * @param file 対象のファイル From c76731465a75eec2d1d096abf66d9239fc3a7135 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Tue, 4 Feb 2014 17:43:16 +0900 Subject: [PATCH 12/13] Add Hyperlink on BehaviorQueryPath --- ...emecha.eclipse.plugin.dfassist_0.0.3.0.jar | Bin 47025 -> 47529 bytes .../link/CustomizeEntityHyperlink.java | 120 +++--- .../link/OutsideSqlHyperlinkDetector.java | 15 +- .../dfassist/link/ParameterBeanHyperlink.java | 117 +++--- .../dfassist/link/SqlFileHyperlink.java | 379 ++++++++++-------- 5 files changed, 338 insertions(+), 293 deletions(-) diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.seasar.dbflute.emecha.eclipse.plugin.dfassist_0.0.3.0.jar index 6e9ab0de114e79e4273e98e8702a17d19274f4f4..2c07de68c9201fe51d87aefd401258cdd91e04c8 100644 GIT binary patch delta 9734 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

6N@*fWb^8Ryvw7KWBmJJQ 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 diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java index 3b8d6d1..837f13b 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/CustomizeEntityHyperlink.java @@ -27,78 +27,74 @@ import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.Messages; /** + * Hyperlink to CustomizeEntity. * @author schatten - * */ public class CustomizeEntityHyperlink implements IHyperlink { - private final IRegion fRegion; - private final SelectionDispatchAction fOpenAction; - private final IType fElement; - @SuppressWarnings("unused") - private final boolean fQualify; - private IType entityType = null; - - public CustomizeEntityHyperlink(IRegion region, - SelectionDispatchAction openAction, IType element, - boolean qualify) { - Assert.isNotNull(openAction); - Assert.isNotNull(region); + private final IRegion fRegion; + private final SelectionDispatchAction fOpenAction; + private final IType fElement; + @SuppressWarnings("unused") + private final boolean fQualify; + private IType entityType = null; - fRegion= region; - fOpenAction= openAction; - fElement= element; - fQualify= qualify; - try { - entityType = getEntityClassType(); - } catch (JavaModelException e) { - // TODO 自動生成された catch ブロック - DfAssistPlugin.log(e); - } - } + public CustomizeEntityHyperlink(IRegion region, SelectionDispatchAction openAction, IType element, boolean qualify) { + Assert.isNotNull(openAction); + Assert.isNotNull(region); - public IRegion getHyperlinkRegion() { - return fRegion; - } + fRegion = region; + fOpenAction = openAction; + fElement = element; + fQualify = qualify; + try { + entityType = getEntityClassType(); + } catch (JavaModelException e) { + DfAssistPlugin.log(e); + } + } - public String getTypeLabel() { - return null; - } + public IRegion getHyperlinkRegion() { + return fRegion; + } - public String getHyperlinkText() { - return Messages.HYPERLINK_CUSTOMIZE_ENTITY; - } + public String getTypeLabel() { + return null; + } + public String getHyperlinkText() { + return Messages.HYPERLINK_CUSTOMIZE_ENTITY; + } - public void open() { - if (existEntityType()) { - fOpenAction.run(new StructuredSelection(entityType)); - } - } + public void open() { + if (existEntityType()) { + fOpenAction.run(new StructuredSelection(entityType)); + } + } - /** - * CustomizeEntityが存在するか判定する。 - * @return 対になるCustomizeEntityが存在する場合にtrue - */ - public boolean existEntityType() { - return entityType != null && entityType.exists(); - } + /** + * CustomizeEntityが存在するか判定する。 + * @return 対になるCustomizeEntityが存在する場合にtrue + */ + public boolean existEntityType() { + return entityType != null && entityType.exists(); + } - private IType getEntityClassType() throws JavaModelException { - String packageName = fElement.getPackageFragment().getElementName(); - String typeQualifiedName = fElement.getTypeQualifiedName(); - if (packageName.endsWith(".exbhv.pmbean")){ - packageName = packageName.substring(0, packageName.indexOf(".exbhv.pmbean")) + ".exentity.customize"; - } - if (packageName.endsWith(".bsbhv.pmbean")){ - packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exentity.customize"; - if (typeQualifiedName.startsWith("Bs")) { - typeQualifiedName = typeQualifiedName.substring("Bs".length()); - } - } - if (typeQualifiedName.endsWith("Pmb")) { - typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); - } - return fElement.getJavaProject().findType(packageName, typeQualifiedName,(IProgressMonitor)null); - } + private IType getEntityClassType() throws JavaModelException { + String packageName = fElement.getPackageFragment().getElementName(); + String typeQualifiedName = fElement.getTypeQualifiedName(); + if (packageName.endsWith(".exbhv.pmbean")) { + packageName = packageName.substring(0, packageName.indexOf(".exbhv.pmbean")) + ".exentity.customize"; + } + if (packageName.endsWith(".bsbhv.pmbean")) { + packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exentity.customize"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + } + if (typeQualifiedName.endsWith("Pmb")) { + typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); + } + return fElement.getJavaProject().findType(packageName, typeQualifiedName, (IProgressMonitor) null); + } } diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java index 2760350..80c645c 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/OutsideSqlHyperlinkDetector.java @@ -17,6 +17,7 @@ import java.util.List; +import org.eclipse.jdt.core.IField; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor; @@ -27,8 +28,8 @@ import friend.org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector; /** - * @author schatten * + * @author schatten */ @SuppressWarnings("restriction") public class OutsideSqlHyperlinkDetector extends JavaElementHyperlinkDetector { @@ -36,7 +37,9 @@ public class OutsideSqlHyperlinkDetector extends JavaElementHyperlinkDetector { * @see org.eclipse.jdt.internal.ui.javaeditor.JavaElementHyperlinkDetector#addHyperlinks(org.eclipse.jface.text.IRegion, org.eclipse.jdt.ui.actions.SelectionDispatchAction, org.eclipse.jdt.core.IJavaElement, boolean, org.eclipse.ui.texteditor.ITextEditor) */ @Override - protected void addHyperlinks(List hyperlinksCollector, IRegion wordRegion, SelectionDispatchAction openAction, IJavaElement element, boolean qualify, JavaEditor editor) { + protected void addHyperlinks(List hyperlinksCollector, IRegion wordRegion, + SelectionDispatchAction openAction, IJavaElement element, boolean qualify, JavaEditor editor) { + if (element instanceof IType) { String packageName = ((IType) element).getPackageFragment().getElementName(); if (packageName.endsWith(".exbhv.pmbean") || packageName.endsWith(".bsbhv.pmbean")) { @@ -58,6 +61,14 @@ protected void addHyperlinks(List hyperlinksCollector, IRegion wordR hyperlinksCollector.add(pmbLink); } } + + } else if (element instanceof IField) { + if (element.getElementName().startsWith("PATH_")) { + SqlFileHyperlink sqlLink = new SqlFileHyperlink(wordRegion, openAction, (IField) element, qualify); + if (sqlLink.existSqlFile()) { + hyperlinksCollector.add(sqlLink); + } + } } } } diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java index 36f7b4b..496437a 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/ParameterBeanHyperlink.java @@ -27,76 +27,73 @@ import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.Messages; /** + * Hyperlink to ParameterBean. * @author schatten - * */ public class ParameterBeanHyperlink implements IHyperlink { - private final IRegion fRegion; - private final SelectionDispatchAction fOpenAction; - private final IType fElement; - @SuppressWarnings("unused") - private final boolean fQualify; - private IType pmbType = null; + private final IRegion fRegion; + private final SelectionDispatchAction fOpenAction; + private final IType fElement; + @SuppressWarnings("unused") + private final boolean fQualify; + private IType pmbType = null; - public ParameterBeanHyperlink(IRegion region, - SelectionDispatchAction openAction, IType element, - boolean qualify) { - Assert.isNotNull(openAction); - Assert.isNotNull(region); + public ParameterBeanHyperlink(IRegion region, SelectionDispatchAction openAction, IType element, boolean qualify) { + Assert.isNotNull(openAction); + Assert.isNotNull(region); - fRegion= region; - fOpenAction= openAction; - fElement= element; - fQualify= qualify; - try { - pmbType = getPmbClassType(); - } catch (JavaModelException e) { - // TODO 自動生成された catch ブロック - DfAssistPlugin.log(e); - } - } + fRegion = region; + fOpenAction = openAction; + fElement = element; + fQualify = qualify; + try { + pmbType = getPmbClassType(); + } catch (JavaModelException e) { + DfAssistPlugin.log(e); + } + } - public IRegion getHyperlinkRegion() { - return fRegion; - } + public IRegion getHyperlinkRegion() { + return fRegion; + } - public String getTypeLabel() { - return null; - } + public String getTypeLabel() { + return null; + } - public String getHyperlinkText() { - return Messages.HYPERLINK_PARAMETER_BEAN; - } + public String getHyperlinkText() { + return Messages.HYPERLINK_PARAMETER_BEAN; + } - public void open() { - if (existPmbType()) { - fOpenAction.run(new StructuredSelection(pmbType)); - } - } + public void open() { + if (existPmbType()) { + fOpenAction.run(new StructuredSelection(pmbType)); + } + } - /** - * ParameterBeanが存在するか判定する。 - * @return 対になるParameterBeanが存在する場合にtrue - */ - public boolean existPmbType() { - return pmbType != null && pmbType.exists(); - } + /** + * ParameterBeanが存在するか判定する。 + * @return 対になるParameterBeanが存在する場合にtrue + */ + public boolean existPmbType() { + return pmbType != null && pmbType.exists(); + } - private IType getPmbClassType() throws JavaModelException { - String packageName = fElement.getPackageFragment().getElementName(); - String typeQualifiedName = fElement.getTypeQualifiedName(); - if (packageName.endsWith(".exentity.customize")){ - packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv.pmbean"; - } - if (packageName.endsWith(".bsentity.customize")){ - packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv.pmbean"; - if (typeQualifiedName.startsWith("Bs")) { - typeQualifiedName = typeQualifiedName.substring("Bs".length()); - } - } - typeQualifiedName = typeQualifiedName + "Pmb"; - IType findType = fElement.getJavaProject().findType(packageName, typeQualifiedName,(IProgressMonitor)null); - return findType; - } + private IType getPmbClassType() throws JavaModelException { + String packageName = fElement.getPackageFragment().getElementName(); + String typeQualifiedName = fElement.getTypeQualifiedName(); + if (packageName.endsWith(".exentity.customize")) { + packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv.pmbean"; + } + if (packageName.endsWith(".bsentity.customize")) { + packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv.pmbean"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + } + typeQualifiedName = typeQualifiedName + "Pmb"; + IType findType = fElement.getJavaProject().findType(packageName, typeQualifiedName, (IProgressMonitor) null); + return findType; + } } diff --git a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java index 08f02c2..94598cb 100644 --- a/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java +++ b/org.seasar.dbflute.emecha.eclipse.plugin.dfassist/src/main/java/org/seasar/dbflute/emecha/eclipse/plugin/dfassist/link/SqlFileHyperlink.java @@ -20,6 +20,7 @@ import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.jdt.core.IField; import org.eclipse.jdt.core.IJarEntryResource; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IMethod; @@ -34,177 +35,217 @@ import org.seasar.dbflute.emecha.eclipse.plugin.dfassist.nls.Messages; /** + * Java code Hyperlink to SQL. * @author schatten - * */ public class SqlFileHyperlink implements IHyperlink { - private final IRegion fRegion; - private final SelectionDispatchAction fOpenAction; - private final IType fElement; - @SuppressWarnings("unused") - private final boolean fQualify; - private IStorage sqlFile; - - public SqlFileHyperlink(IRegion region, - SelectionDispatchAction openAction, IType element, - boolean qualify) { - Assert.isNotNull(openAction); - Assert.isNotNull(region); - - fRegion= region; - fOpenAction= openAction; - fElement= element; - fQualify= qualify; - try { - sqlFile = findSqlResource(fElement); - if (sqlFile == null) { - String packageName = fElement.getPackageFragment().getElementName(); - String typeQualifiedName = fElement.getTypeQualifiedName(); - if (packageName.endsWith(".exbhv.pmbean")){ - packageName = packageName.substring(0, packageName.indexOf(".pmbean")); - if (typeQualifiedName.endsWith("Pmb")) { - typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); - } - }else if (packageName.endsWith(".bsbhv.pmbean")){ - packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exbhv"; - if (typeQualifiedName.startsWith("Bs")) { - typeQualifiedName = typeQualifiedName.substring("Bs".length()); - } - if (typeQualifiedName.endsWith("Pmb")) { - typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); - } - }else if (packageName.endsWith(".exentity.customize")){ - packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv"; - }else if (packageName.endsWith(".bsentity.customize")){ - packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv"; - if (typeQualifiedName.startsWith("Bs")) { - typeQualifiedName = typeQualifiedName.substring("Bs".length()); - } - } - sqlFile = getSqlResource(packageName, typeQualifiedName); - } - } catch (CoreException e) { - // TODO 自動生成された catch ブロック - DfAssistPlugin.log(e); - } - } - - public IRegion getHyperlinkRegion() { - return fRegion; - } - - public String getTypeLabel() { - return null; - } - - public String getHyperlinkText() { - return Messages.HYPERLINK_SQL_FILE; - } - - public void open() { - if (existSqlFile() ) { - fOpenAction.run(new StructuredSelection(sqlFile)); - } - } - - public boolean existSqlFile() { - return sqlFile != null; - } - - private IStorage findSqlResource(IType type) throws CoreException { - IType bsPmb = null; - String packageName = type.getPackageFragment().getElementName(); - String typeQualifiedName = type.getTypeQualifiedName(); - if (packageName.endsWith(".exbhv.pmbean")){ - String bsPackageName = packageName.substring(0, packageName.indexOf(".exbhv.pmbean")) + ".bsbhv.pmbean"; - packageName = packageName.substring(0, packageName.indexOf(".pmbean")); - String superclassTypeSignature = type.getSuperclassName(); - bsPmb = fElement.getJavaProject().findType(bsPackageName, superclassTypeSignature,(IProgressMonitor)null); - }else if (packageName.endsWith(".bsbhv.pmbean")){ - packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exbhv"; - bsPmb = type; - }else if (packageName.endsWith(".exentity.customize")){ - String bsPackageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".bsbhv.pmbean"; - packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv"; - String superclassTypeName = "Bs" + typeQualifiedName + "Pmb"; - bsPmb = fElement.getJavaProject().findType(bsPackageName, superclassTypeName,(IProgressMonitor)null); - }else if (packageName.endsWith(".bsentity.customize")){ - String bsPackageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".bsbhv.pmbean"; - packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv"; - String superclassTypeName = typeQualifiedName + "Pmb"; - bsPmb = fElement.getJavaProject().findType(bsPackageName, superclassTypeName,(IProgressMonitor)null); - } - if (bsPmb == null) { - return null; - } - IMethod method = bsPmb.getMethod("getOutsideSqlPath", (String[])null); //$NON-NLS-1$ - if (method == null) { - return null; - } - String source = method.getSource(); - String path = source.substring(source.indexOf('"') + 1, source.lastIndexOf('"')); //$NON-NLS-1$ //$NON-NLS-2$ - if (path == null || path.trim().length() == 0) { - return null; - } - String[] splitPath = path.split(":"); //$NON-NLS-1$ - int length = splitPath.length - 1; - for (int i = 0; i < length; i++) { - packageName += "." + splitPath[i]; //$NON-NLS-1$ - } - - return getSqlResource(packageName, "_" + splitPath[length]); //$NON-NLS-1$ - } - - private IStorage getSqlResource(String packageName, String typeQualifiedName) throws CoreException { - IPackageFragmentRoot[] allPackageFragmentRoots = fElement.getJavaProject().getPackageFragmentRoots(); - for (IPackageFragmentRoot root : allPackageFragmentRoots) { - IPackageFragment packageFragment = root.getPackageFragment(packageName); - if (!packageFragment.exists()) continue; - IStorage sqlResource = searchPackageResource(packageFragment, typeQualifiedName); - if (sqlResource != null) return sqlResource; - } - return null; - } - private IStorage searchPackageResource(IPackageFragment packageFragment, String typeQualifiedName) throws CoreException { - Object[] nonJavaResources = packageFragment.getNonJavaResources(); - IStorage sqlResource = searchSqlResource(typeQualifiedName, nonJavaResources); - if (sqlResource != null) return sqlResource; - IJavaElement[] children = packageFragment.getChildren(); - for (IJavaElement element : children) { - if (element instanceof IPackageFragment) { - sqlResource = searchPackageResource((IPackageFragment)element, typeQualifiedName); - if (sqlResource != null) return sqlResource; - } - } - return null; - } - - private IStorage searchSqlResource(String typeQualifiedName, Object[] nonJavaResources) throws CoreException { - for (Object object : nonJavaResources) { - if ( object instanceof IFile ) { - String fileName = ((IFile) object).getName(); - if ( isSqlFileName(typeQualifiedName, fileName)) { - return (IFile) object; - } - } - if ( object instanceof IJarEntryResource) { - IJarEntryResource jarEntry = (IJarEntryResource) object; - if (jarEntry.isFile()) { - String fileName = jarEntry.getName(); - if ( isSqlFileName(typeQualifiedName, fileName)) { - return jarEntry; - } - } - } - } - return null; - } - - private boolean isSqlFileName(String typeQualifiedName, String fileName) { - if (fileName == null || fileName.trim().length() == 0) return false; - if (!fileName.endsWith(".sql")) return false; //$NON-NLS-1$ - if (fileName.endsWith((typeQualifiedName + ".sql"))) return true; //$NON-NLS-1$ - return fileName.endsWith( String.valueOf(typeQualifiedName.charAt(0)).toLowerCase() + typeQualifiedName.substring(1) + ".sql"); //$NON-NLS-1$ - } + private final IRegion fRegion; + private final SelectionDispatchAction fOpenAction; + private final boolean fQualify; + private IStorage sqlFile; + + public SqlFileHyperlink(IRegion region, SelectionDispatchAction openAction, IType element, boolean qualify) { + Assert.isNotNull(openAction); + Assert.isNotNull(region); + + fRegion = region; + fOpenAction = openAction; + fQualify = qualify; + try { + sqlFile = findSqlResource(element); + if (sqlFile == null) { + String packageName = element.getPackageFragment().getElementName(); + String typeQualifiedName = element.getTypeQualifiedName(); + if (packageName.endsWith(".exbhv.pmbean")) { + packageName = packageName.substring(0, packageName.indexOf(".pmbean")); + if (typeQualifiedName.endsWith("Pmb")) { + typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); + } + } else if (packageName.endsWith(".bsbhv.pmbean")) { + packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exbhv"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + if (typeQualifiedName.endsWith("Pmb")) { + typeQualifiedName = typeQualifiedName.substring(0, typeQualifiedName.indexOf("Pmb")); + } + } else if (packageName.endsWith(".exentity.customize")) { + packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv"; + } else if (packageName.endsWith(".bsentity.customize")) { + packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv"; + if (typeQualifiedName.startsWith("Bs")) { + typeQualifiedName = typeQualifiedName.substring("Bs".length()); + } + } + sqlFile = getSqlResource(element, packageName, typeQualifiedName); + } + } catch (CoreException e) { + DfAssistPlugin.log(e); + } + } + + public SqlFileHyperlink(IRegion region, SelectionDispatchAction openAction, IField element, boolean qualify) { + Assert.isNotNull(openAction); + Assert.isNotNull(region); + + fRegion = region; + fOpenAction = openAction; + fQualify = qualify; + try { + IType parentElement = (IType) element.getParent(); + String packageName = parentElement.getPackageFragment().getElementName(); + if (packageName.endsWith("bsbhv")) { + packageName = packageName.substring(0, packageName.lastIndexOf('.')) + ".exbhv"; + } + String source = (String) parentElement.getField(element.getElementName()).getConstant(); + source = source.substring(source.indexOf('"') + 1, source.lastIndexOf('"')); //$NON-NLS-1$ //$NON-NLS-2$ + String[] splitPath = source.split(":"); + int length = splitPath.length - 1; + for (int i = 0; i < length; i++) { + packageName += "." + splitPath[i]; //$NON-NLS-1$ + } + String typeQualifiedName = splitPath[length]; + + sqlFile = getSqlResource(parentElement, packageName, typeQualifiedName); + } catch (CoreException e) { + DfAssistPlugin.log(e); + } + } + + public boolean isQualify() { + return fQualify; + } + + public IRegion getHyperlinkRegion() { + return fRegion; + } + + public String getTypeLabel() { + return null; + } + + public String getHyperlinkText() { + return Messages.HYPERLINK_SQL_FILE; + } + + public void open() { + if (existSqlFile()) { + fOpenAction.run(new StructuredSelection(sqlFile)); + } + } + + public boolean existSqlFile() { + return sqlFile != null; + } + + private IStorage findSqlResource(IType type) throws CoreException { + IType bsPmb = null; + String packageName = type.getPackageFragment().getElementName(); + String typeQualifiedName = type.getTypeQualifiedName(); + if (packageName.endsWith(".exbhv.pmbean")) { + String bsPackageName = packageName.substring(0, packageName.indexOf(".exbhv.pmbean")) + ".bsbhv.pmbean"; + packageName = packageName.substring(0, packageName.indexOf(".pmbean")); + String superclassTypeSignature = type.getSuperclassName(); + bsPmb = type.getJavaProject().findType(bsPackageName, superclassTypeSignature, (IProgressMonitor) null); + } else if (packageName.endsWith(".bsbhv.pmbean")) { + packageName = packageName.substring(0, packageName.indexOf(".bsbhv.pmbean")) + ".exbhv"; + bsPmb = type; + } else if (packageName.endsWith(".exentity.customize")) { + String bsPackageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".bsbhv.pmbean"; + packageName = packageName.substring(0, packageName.indexOf(".exentity.customize")) + ".exbhv"; + String superclassTypeName = "Bs" + typeQualifiedName + "Pmb"; + bsPmb = type.getJavaProject().findType(bsPackageName, superclassTypeName, (IProgressMonitor) null); + } else if (packageName.endsWith(".bsentity.customize")) { + String bsPackageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".bsbhv.pmbean"; + packageName = packageName.substring(0, packageName.indexOf(".bsentity.customize")) + ".exbhv"; + String superclassTypeName = typeQualifiedName + "Pmb"; + bsPmb = type.getJavaProject().findType(bsPackageName, superclassTypeName, (IProgressMonitor) null); + } + if (bsPmb == null) { + return null; + } + IMethod method = bsPmb.getMethod("getOutsideSqlPath", (String[]) null); //$NON-NLS-1$ + if (method == null) { + return null; + } + String source = method.getSource(); + String path = source.substring(source.indexOf('"') + 1, source.lastIndexOf('"')); //$NON-NLS-1$ //$NON-NLS-2$ + if (path == null || path.trim().length() == 0) { + return null; + } + String[] splitPath = path.split(":"); //$NON-NLS-1$ + int length = splitPath.length - 1; + for (int i = 0; i < length; i++) { + packageName += "." + splitPath[i]; //$NON-NLS-1$ + } + + return getSqlResource(type, packageName, "_" + splitPath[length]); //$NON-NLS-1$ + } + + private IStorage getSqlResource(IType type, String packageName, String typeQualifiedName) throws CoreException { + IPackageFragmentRoot[] allPackageFragmentRoots = type.getJavaProject().getPackageFragmentRoots(); + for (IPackageFragmentRoot root : allPackageFragmentRoots) { + IPackageFragment packageFragment = root.getPackageFragment(packageName); + if (!packageFragment.exists()) { + continue; + } + IStorage sqlResource = searchPackageResource(packageFragment, typeQualifiedName); + if (sqlResource != null) { + return sqlResource; + } + } + return null; + } + + private IStorage searchPackageResource(IPackageFragment packageFragment, String typeQualifiedName) throws CoreException { + Object[] nonJavaResources = packageFragment.getNonJavaResources(); + IStorage sqlResource = searchSqlResource(typeQualifiedName, nonJavaResources); + if (sqlResource != null) { + return sqlResource; + } + IJavaElement[] children = packageFragment.getChildren(); + for (IJavaElement element : children) { + if (element instanceof IPackageFragment) { + sqlResource = searchPackageResource((IPackageFragment) element, typeQualifiedName); + if (sqlResource != null) + return sqlResource; + } + } + return null; + } + + private IStorage searchSqlResource(String typeQualifiedName, Object[] nonJavaResources) throws CoreException { + for (Object object : nonJavaResources) { + if (object instanceof IFile) { + String fileName = ((IFile) object).getName(); + if (isSqlFileName(typeQualifiedName, fileName)) { + return (IFile) object; + } + } + if (object instanceof IJarEntryResource) { + IJarEntryResource jarEntry = (IJarEntryResource) object; + if (jarEntry.isFile()) { + String fileName = jarEntry.getName(); + if (isSqlFileName(typeQualifiedName, fileName)) { + return jarEntry; + } + } + } + } + return null; + } + + private boolean isSqlFileName(String typeQualifiedName, String fileName) { + if (fileName == null || fileName.trim().length() == 0) { + return false; + } + if (!fileName.endsWith(".sql")) { //$NON-NLS-1$ + return false; + } + if (fileName.endsWith((typeQualifiedName + ".sql"))) { //$NON-NLS-1$ + return true; + } + return fileName.endsWith(String.valueOf(typeQualifiedName.charAt(0)).toLowerCase() + typeQualifiedName.substring(1) + ".sql"); //$NON-NLS-1$ + } } From b8afc9f7b18078698ba968b0e76d338a040650f6 Mon Sep 17 00:00:00 2001 From: schatten4810 Date: Thu, 6 Feb 2014 15:58:41 +0900 Subject: [PATCH 13/13] Refactor. --- .../emecha/synchronizer/EMSynchronizer.java | 48 ++++++++++++++---- .../EMSynchronizerPreferencePage.java | 12 ++++- .../org.dbflute.emecha.synchronizer_0.1.0.jar | Bin 12425 -> 12844 bytes 3 files changed, 48 insertions(+), 12 deletions(-) diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java index c75b484..312e12e 100644 --- a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/EMSynchronizer.java @@ -23,6 +23,8 @@ import org.dbflute.emecha.synchronizer.handler.RefreshHandler; import org.dbflute.emecha.synchronizer.preferences.PreferenceConstants; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.Status; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.ui.IStartup; import org.eclipse.ui.plugin.AbstractUIPlugin; @@ -45,6 +47,7 @@ public class EMSynchronizer extends AbstractUIPlugin implements IStartup { private ExecutorService threadPool; + private int port; /** * The constructor */ @@ -58,6 +61,7 @@ public EMSynchronizer() { @Override public void earlyStartup() { // Startup plugin with Server + serverStart(); } /* @@ -68,7 +72,6 @@ public void earlyStartup() { public void start(BundleContext context) throws Exception { super.start(context); plugin = this; - serverStart(); } /* @@ -82,15 +85,22 @@ public void stop(BundleContext context) throws Exception { super.stop(context); } - public void serverStart() throws IOException { - int port = plugin.getPreferenceStore().getInt(PreferenceConstants.P_LISTEN_PORT); - String hostname = "localhost"; - server = HttpServer.create(new InetSocketAddress(hostname, port), 0); - threadPool = Executors.newFixedThreadPool(1); - server.setExecutor(threadPool); - server.createContext("/", new RefreshHandler()); - server.createContext("/refresh", new RefreshHandler()); - server.start(); + public void serverStart() { + try { + plugin.port = plugin.getPreferenceStore().getInt(PreferenceConstants.P_LISTEN_PORT); + String hostname = "localhost"; + HttpServer server = HttpServer.create(new InetSocketAddress(hostname, port), 0); + threadPool = Executors.newFixedThreadPool(1); + server.setExecutor(threadPool); + server.createContext("/", new RefreshHandler()); + server.createContext("/refresh", new RefreshHandler()); + server.start(); + getLog().log(new Status(IStatus.INFO, PLUGIN_ID, "Synchronizer server is started at port"+ port +".")); + this.server = server; + } catch (IOException e) { + getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, "Synchronizer server is not started by error. (Port:" + port + ")", e)); + server = null; + } } public void serverStop() throws InterruptedException { @@ -99,8 +109,24 @@ public void serverStop() throws InterruptedException { } if (threadPool != null && !threadPool.isShutdown()) { threadPool.shutdownNow(); + threadPool.awaitTermination(60, TimeUnit.SECONDS); + } + threadPool = null; + server = null; + } + + public static void serverRestart() { + EMSynchronizer synchronizer = getDefault(); + try { + synchronizer.serverStop(); + synchronizer.serverStart(); + } catch (InterruptedException e) { + synchronizer.getLog().log(new Status(IStatus.ERROR, PLUGIN_ID, "Synchronizer server stop error.", e)); } - threadPool.awaitTermination(60, TimeUnit.SECONDS); + } + + public static int getServerPort() { + return plugin.port; } /** diff --git a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java index 6b0a278..4232648 100644 --- a/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java +++ b/org.dbflute.emecha.synchronizer/src/main/java/org/dbflute/emecha/synchronizer/preferences/EMSynchronizerPreferencePage.java @@ -44,16 +44,26 @@ public EMSynchronizerPreferencePage() { */ public void createFieldEditors() { portEditor = new IntegerFieldEditor(PreferenceConstants.P_LISTEN_PORT, "&Port", getFieldEditorParent()); //$NON-NLS-1$ + portEditor.setEmptyStringAllowed(false); addField(portEditor); } /* * (non-Javadoc) - * + * * @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench) */ public void init(IWorkbench workbench) { } + @Override + protected void performApply() { + super.performApply(); + int newValue = portEditor.getIntValue(); + int serverPort = EMSynchronizer.getServerPort(); + if (serverPort != newValue) { + EMSynchronizer.serverRestart(); + } + } } \ No newline at end of file diff --git a/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.dbflute.emecha.synchronizer_0.1.0.jar b/org.seasar.dbflute.emecha.eclipse.feature/dropins/emecha/eclipse/plugins/org.dbflute.emecha.synchronizer_0.1.0.jar index ba0447628e1bf913b48792e91250346262efc8b8..b301040f4e2d9e3c6ee02862eea9fa864be62708 100644 GIT binary patch delta 5314 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 Yf)*waU{hmY5ClFsEDQ|YYcJ0K0Dsn-e*gdg