diff --git a/.classpath b/.classpath index 932fd5c..49432dc 100644 --- a/.classpath +++ b/.classpath @@ -6,7 +6,7 @@ - + diff --git a/.gitignore b/.gitignore index 24c7510..4673919 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ /pensive.log.8 /pensive.log.9 /.DS_Store +/dependency-reduced-pom.xml diff --git a/.project b/.project index 57c151d..e6b91b6 100644 --- a/.project +++ b/.project @@ -11,17 +11,17 @@ - org.eclipse.m2e.core.maven2Builder + ch.acanda.eclipse.pmd.builder.PMDBuilder - ch.acanda.eclipse.pmd.builder.PMDBuilder + net.sf.eclipsecs.core.CheckstyleBuilder - net.sf.eclipsecs.core.CheckstyleBuilder + org.eclipse.m2e.core.maven2Builder diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs index 839d647..abdea9a 100644 --- a/.settings/org.eclipse.core.resources.prefs +++ b/.settings/org.eclipse.core.resources.prefs @@ -1,5 +1,4 @@ eclipse.preferences.version=1 encoding//src/main/java=UTF-8 encoding//src/main/resources=UTF-8 -encoding//src/test/java=UTF-8 encoding/=UTF-8 diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index 8e4055a..2cf6456 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -1,12 +1,327 @@ eclipse.preferences.version=1 +org.eclipse.jdt.core.codeComplete.argumentPrefixes= +org.eclipse.jdt.core.codeComplete.argumentSuffixes= +org.eclipse.jdt.core.codeComplete.fieldPrefixes= +org.eclipse.jdt.core.codeComplete.fieldSuffixes= +org.eclipse.jdt.core.codeComplete.localPrefixes= +org.eclipse.jdt.core.codeComplete.localSuffixes= +org.eclipse.jdt.core.codeComplete.staticFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFieldSuffixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldPrefixes= +org.eclipse.jdt.core.codeComplete.staticFinalFieldSuffixes= org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6 org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.5 +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.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.5 +org.eclipse.jdt.core.compiler.source=1.6 +org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647 +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=16 +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=16 +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_expressions_in_for_loop_header=0 +org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0 +org.eclipse.jdt.core.formatter.alignment_for_module_statements=16 +org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16 +org.eclipse.jdt.core.formatter.alignment_for_parameterized_type_references=0 +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_type_arguments=0 +org.eclipse.jdt.core.formatter.alignment_for_type_parameters=0 +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=0 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=0 +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=2 +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_lambda_body=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.count_line_length_from_starting_position=false +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=true +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false +org.eclipse.jdt.core.formatter.comment.format_line_comments=true +org.eclipse.jdt.core.formatter.comment.format_source_code=true +org.eclipse.jdt.core.formatter.comment.indent_parameter_description=false +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=do not insert +org.eclipse.jdt.core.formatter.comment.line_length=100 +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=true +org.eclipse.jdt.core.formatter.indentation.size=4 +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert +org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_after_type_annotation=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=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=do not 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=do not 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=do not 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=do not 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_lambda_arrow=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=do not 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=do not 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_lambda_arrow=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=false +org.eclipse.jdt.core.formatter.join_wrapped_lines=false +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=100 +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=3 +org.eclipse.jdt.core.formatter.parentheses_positions_in_annotation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_catch_clause=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_enum_constant_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_for_statment=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_if_while_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_lambda_declaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_delcaration=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_method_invocation=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_switch_statement=common_lines +org.eclipse.jdt.core.formatter.parentheses_positions_in_try_clause=common_lines +org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false +org.eclipse.jdt.core.formatter.tabulation.char=space +org.eclipse.jdt.core.formatter.tabulation.size=2 +org.eclipse.jdt.core.formatter.use_on_off_tags=false +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false +org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true +org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true +org.eclipse.jdt.core.javaFormatter=org.eclipse.jdt.core.defaultJavaFormatter diff --git a/.settings/org.eclipse.jdt.ui.prefs b/.settings/org.eclipse.jdt.ui.prefs index de57229..a0f60c7 100644 --- a/.settings/org.eclipse.jdt.ui.prefs +++ b/.settings/org.eclipse.jdt.ui.prefs @@ -1,5 +1,69 @@ +cleanup.add_default_serial_version_id=true +cleanup.add_generated_serial_version_id=false +cleanup.add_missing_annotations=true +cleanup.add_missing_deprecated_annotations=true +cleanup.add_missing_methods=false +cleanup.add_missing_nls_tags=false +cleanup.add_missing_override_annotations=true +cleanup.add_missing_override_annotations_interface_methods=true +cleanup.add_serial_version_id=false +cleanup.always_use_blocks=true +cleanup.always_use_parentheses_in_expressions=false +cleanup.always_use_this_for_non_static_field_access=false +cleanup.always_use_this_for_non_static_method_access=false +cleanup.convert_functional_interfaces=false +cleanup.convert_to_enhanced_for_loop=false +cleanup.correct_indentation=false +cleanup.format_source_code=false +cleanup.format_source_code_changes_only=false +cleanup.insert_inferred_type_arguments=false +cleanup.make_local_variable_final=true +cleanup.make_parameters_final=false +cleanup.make_private_fields_final=true +cleanup.make_type_abstract_if_missing_method=false +cleanup.make_variable_declarations_final=false +cleanup.never_use_blocks=false +cleanup.never_use_parentheses_in_expressions=true +cleanup.organize_imports=false +cleanup.qualify_static_field_accesses_with_declaring_class=false +cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true +cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true +cleanup.qualify_static_member_accesses_with_declaring_class=true +cleanup.qualify_static_method_accesses_with_declaring_class=false +cleanup.remove_private_constructors=true +cleanup.remove_redundant_type_arguments=false +cleanup.remove_trailing_whitespaces=false +cleanup.remove_trailing_whitespaces_all=true +cleanup.remove_trailing_whitespaces_ignore_empty=false +cleanup.remove_unnecessary_casts=true +cleanup.remove_unnecessary_nls_tags=true +cleanup.remove_unused_imports=true +cleanup.remove_unused_local_variables=false +cleanup.remove_unused_private_fields=true +cleanup.remove_unused_private_members=false +cleanup.remove_unused_private_methods=true +cleanup.remove_unused_private_types=true +cleanup.sort_members=false +cleanup.sort_members_all=false +cleanup.use_anonymous_class_creation=false +cleanup.use_blocks=false +cleanup.use_blocks_only_for_return_and_throw=false +cleanup.use_lambda=true +cleanup.use_parentheses_in_expressions=false +cleanup.use_this_for_non_static_field_access=false +cleanup.use_this_for_non_static_field_access_only_if_necessary=true +cleanup.use_this_for_non_static_method_access=false +cleanup.use_this_for_non_static_method_access_only_if_necessary=true +cleanup_profile=org.eclipse.jdt.ui.default.eclipse_clean_up_profile +cleanup_settings_version=2 eclipse.preferences.version=1 +formatter_profile=_GoogleStyle +formatter_settings_version=13 +org.eclipse.jdt.ui.exception.name=e +org.eclipse.jdt.ui.gettersetter.use.is=true org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.importorder=com;edu;gov;org;java;javax; +org.eclipse.jdt.ui.keywordthis=false org.eclipse.jdt.ui.ondemandthreshold=99 +org.eclipse.jdt.ui.overrideannotation=true org.eclipse.jdt.ui.staticondemandthreshold=99 diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml deleted file mode 100644 index 8bd3f86..0000000 --- a/dependency-reduced-pom.xml +++ /dev/null @@ -1,281 +0,0 @@ - - - 4.0.0 - gov.usgs.volcanoes - pensive - Pensive - 1.3.5 - http://volcanoes.usgs.gov/software/pensive - - GitHub - https://github.com/usgs/pensive - - - Travis - https://travis-ci.org/usgs/pensive/ - - - - tparker - Tom Parker - tparker@usgs.gov - U.S. Geological Survey, Alaska Volcano Observatory - - true - - - - - - CC0 1.0 Universal - http://creativecommons.org/publicdomain/zero/1.0/ - repo - - - - scm:git:git@github.com:usgs/pensive.git - scm:git:git@github.com:usgs/pensive.git - scm:git:git@github.com:pensive/penive.git - - - - - org.apache.maven.wagon - wagon-ssh-external - 1.0-beta-6 - - - - - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 - - - - - - com.google.code.maven-replacer-plugin - maven-replacer-plugin - 1.4.0 - - replace - - - - - - source: - - - - - - - - - - maven-shade-plugin - 2.4.1 - - - package - - shade - - - true - - - org.apache:log4j - - org/apache/log4j/** - - - - org.freemarker:freemarker - - freemarker/** - - - - - - gov.usgs.volcanoes:* - org.freemarker:freemarker - com.martiansoftware:jsap - net.sourceforge.jtransforms:jtransforms - org.slf4j:* - org.apache:log4j - - - - - - - - maven-jar-plugin - 2.6 - - - - true - gov.usgs.volcanoes.pensive.Pensive - - - - - - com.google.code.maven-replacer-plugin - maven-replacer-plugin - 1.4.0 - - - process-sources - - replace - - - - - ${version.template.file} - ${version.file} - - - @buildnumber@ - ${svn.revision} - - - @buildtime@ - ${maven.build.timestamp} - - - @pomversion@ - ${project.version} - - - - - - maven-site-plugin - 3.4 - - - org.apache.maven.wagon - wagon-scm - 2.9 - - - org.apache.maven.scm - maven-scm-manager-plexus - 1.9.4 - - - org.apache.maven.scm - maven-scm-provider-gitexe - 1.9.4 - - - org.apache.maven.scm - maven-scm-api - 1.9.4 - - - - - - - - - true - - volcanoes - http://volcanoes.usgs.gov/software/maven2/ - - - - - - maven-pmd-plugin - 3.5 - - - /rulesets/java/braces.xml - /rulesets/java/naming.xml - .ruleset - - - - - org.codehaus.mojo - findbugs-maven-plugin - 3.0.0 - - Max - max - true - - - - maven-checkstyle-plugin - 2.16 - - - - checkstyle - - - - - - maven-jxr-plugin - 2.5 - - - maven-javadoc-plugin - 2.10.3 - - false - - - - org.codehaus.mojo - cobertura-maven-plugin - 2.7 - - - html - xml - - - - - org.codehaus.mojo - javancss-maven-plugin - 2.1 - - utf-8 - false - - - - - - - volcanoes.web - Volcanoes website - scpexe://vulcan4.wr.usgs.gov/webdata/volcanoes.usgs.gov/htdocs/software/maven2 - - - github.pages - scm:git:https://git@github.com/usgs/pensive.git - - - - src/main/resources/Version.java.template - src/main/java/gov/usgs/volcanoes/pensive/Version.java - UTF-8 - - - diff --git a/docs/README.html b/docs/README.html new file mode 100644 index 0000000..db87276 --- /dev/null +++ b/docs/README.html @@ -0,0 +1,12 @@ +

Pensive

+ +

Build Status

+ +

A Java application designed to allow visualizing, in near real-time, spectral content of continuous seismic waveforms from a number of sensors deployed on active volcanoes. The application was designed with ease of use in mind. Pensive strives to use sensible defaults in all areas while proving an expressive configuration file to permit fine-grained control when needed.

+ +

Requirements

+ +
    +
  • Java SE runtime. Pensive has been tested with Java virtual machines from Oracle, OpenJDK, and Apple. Any JVM that supports Java 7 or later should do the trick.
  • +
  • Source of wave data. Pensive can request data using either the Winston wave server protocol or the Earthworm WaveServerV protocol.
  • +
diff --git a/pom.xml b/pom.xml index 2c3af53..811f548 100644 --- a/pom.xml +++ b/pom.xml @@ -4,15 +4,17 @@ gov.usgs.volcanoes pensive - 1.3.6 + 1.6.0 jar Pensive - http://volcanoes.usgs.gov/software/pensive + https://volcanoes.usgs.gov/software/pensive UTF-8 src/main/resources/Version.java.template src/main/java/gov/usgs/volcanoes/pensive/Version.java + 1.6 + 1.6 @@ -142,7 +144,7 @@ org.apache.maven.plugins maven-shade-plugin - 2.4.1 + 3.2.1 package @@ -153,7 +155,7 @@ true - org.apache:log4j + log4j:log4j org/apache/log4j/** @@ -164,6 +166,48 @@ freemarker/** + + com.jgoodies:jgoodies-common + + ** + + + + com.jgoodies:jgoodies-forms + + ** + + + + com.jgoodies:jgoodies-looks + + ** + + + + opensymphony:oscache + + ** + + + + opensymphony:oscache + + ** + + + + commons-logging:commons-logging + + ** + + + + gov.usgs.volcanoes:swarm + + ** + + @@ -173,6 +217,14 @@ net.sourceforge.jtransforms:jtransforms org.slf4j:* org.apache:log4j + net.alomax:* + com.jgoodies:* + edu.iris:JavaSeedLite + opensymphony:oscache + edu.sc.seis:seisFile + org.apache.httpcomponents:httpclient + org.apache.httpcomponents:httpcore + commons-logging:commons-logging @@ -297,7 +349,7 @@ true - http://volcanoes.usgs.gov/software/maven2/ + https://volcanoes.usgs.gov/software/maven2/ @@ -328,24 +380,65 @@ 1.7.1 - org.apache + log4j log4j 1.2.13 - - gov.usgs.volcanoes - usgs - 1.3.1 - gov.usgs.volcanoes swarm - 2.5-SNAPSHOT + 2.8.13 gov.usgs.volcanoes volcano-core - [1.3.1,) + [1.4.7,) + + + net.alomax + seedlink_lite + 1.2.2 + + com.jgoodies + jgoodies-common + 1.8.1 + + + com.jgoodies + jgoodies-forms + 1.8.0 + + + com.jgoodies + jgoodies-looks + 2.6.0 + + + edu.iris + JavaSeedLite + 1.0 + + + edu.iris + seedCodec + 1.0.10 + + + opensymphony + oscache + 2.4.1 + + + javax.jms + jms + + + + + edu.sc.seis + seisFile + 1.8.2 +
diff --git a/src/main/java/gov/usgs/volcanoes/pensive/Channel.java b/src/main/java/gov/usgs/volcanoes/pensive/Channel.java index 806d0e3..f3f15c0 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/Channel.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/Channel.java @@ -1,22 +1,25 @@ /** - * I waive copyright and related rights in the this work worldwide - * through the CC0 1.0 Universal public domain dedication. - * https://creativecommons.org/publicdomain/zero/1.0/legalcode + * I waive copyright and related rights in the this work worldwide through the CC0 1.0 Universal + * public domain dedication. https://creativecommons.org/publicdomain/zero/1.0/legalcode */ package gov.usgs.volcanoes.pensive; -import gov.usgs.plot.data.SliceWave; -import gov.usgs.plot.data.Wave; -import gov.usgs.plot.render.Renderer; import gov.usgs.volcanoes.core.configfile.ConfigFile; +import gov.usgs.volcanoes.core.data.Scnl; +import gov.usgs.volcanoes.core.data.SliceWave; +import gov.usgs.volcanoes.core.data.Wave; +import gov.usgs.volcanoes.core.legacy.plot.render.Renderer; import gov.usgs.volcanoes.core.time.J2kSec; import gov.usgs.volcanoes.core.time.Time; +import gov.usgs.volcanoes.core.time.TimeSpan; +import gov.usgs.volcanoes.core.util.UtilException; import gov.usgs.volcanoes.pensive.plot.ChannelPlotter; import gov.usgs.volcanoes.pensive.plot.FullPlotter; import gov.usgs.volcanoes.pensive.plot.SubnetPlotter; import gov.usgs.volcanoes.pensive.plot.ThumbnailPlotter; import gov.usgs.volcanoes.swarm.data.SeismicDataSource; +import gov.usgs.volcanoes.swarm.data.seedlink.SeedLinkSource; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -76,6 +79,7 @@ public class Channel { /** data file timestamp format. */ private final String dataTimestampFormat; + /** * Class constructor. * @@ -116,7 +120,11 @@ public Channel(final String channel, final int index, final Dimension plotDimens public void updateWave(final long plotEndMs, final SeismicDataSource dataSource) { final double t2 = J2kSec.fromEpoch(plotEndMs); final double t1 = t2 - SubnetPlotter.DURATION_S; - final Wave w = dataSource.getWave(name.replace('_', ' '), t1, t2); + + Wave w2; + w2 = dataSource.getWave(name.replace('_', ' '), t1, t2); + + final Wave w = w2; if (w != null && w.numSamples() > 0) { w.detrend(); w.removeMean(); diff --git a/src/main/java/gov/usgs/volcanoes/pensive/FdsnwsSource.java b/src/main/java/gov/usgs/volcanoes/pensive/FdsnwsSource.java new file mode 100644 index 0000000..bd955c4 --- /dev/null +++ b/src/main/java/gov/usgs/volcanoes/pensive/FdsnwsSource.java @@ -0,0 +1,218 @@ +package gov.usgs.volcanoes.pensive; + +import edu.iris.dmc.seedcodec.Codec; +import edu.iris.dmc.seedcodec.CodecException; +import edu.iris.dmc.seedcodec.DecompressedData; +import edu.iris.dmc.seedcodec.UnsupportedCompressionType; +import edu.sc.seis.seisFile.ChannelTimeWindow; +import edu.sc.seis.seisFile.SeisFileException; +import edu.sc.seis.seisFile.fdsnws.FDSNDataSelectQuerier; +import edu.sc.seis.seisFile.fdsnws.FDSNDataSelectQueryParams; +import edu.sc.seis.seisFile.fdsnws.FDSNWSException; +import edu.sc.seis.seisFile.mseed.Blockette; +import edu.sc.seis.seisFile.mseed.Blockette1000; +import edu.sc.seis.seisFile.mseed.Btime; +import edu.sc.seis.seisFile.mseed.DataHeader; +import edu.sc.seis.seisFile.mseed.DataRecord; +import edu.sc.seis.seisFile.mseed.DataRecordIterator; +import edu.sc.seis.seisFile.mseed.SeedFormatException; + +import gov.usgs.volcanoes.core.configfile.ConfigFile; +import gov.usgs.volcanoes.core.data.HelicorderData; +import gov.usgs.volcanoes.core.data.Wave; +import gov.usgs.volcanoes.core.time.J2kSec; +import gov.usgs.volcanoes.swarm.data.GulperListener; +import gov.usgs.volcanoes.swarm.data.SeismicDataSource; + +import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.TimeZone; + +public class FdsnwsSource extends SeismicDataSource { + + private final String dataselectUri; + private final String user; + private final String password; + + public FdsnwsSource(final ConfigFile config) { + this.dataselectUri = config.getString("dataselectUrl"); + this.user = config.getString("user", null); + this.password = config.getString("password", null); + } + + + @Override + public List getChannels() { + throw new UnsupportedOperationException(); + } + + @Override + public void parse(String params) { + throw new UnsupportedOperationException(); + } + + private FDSNDataSelectQueryParams configureParamsOld(String station, double t1, double t2) { + System.out.println("Station: " + station); + String[] parts = station.split("\\s+"); + FDSNDataSelectQueryParams queryParams = new FDSNDataSelectQueryParams(); + queryParams.setStartTime(J2kSec.asDate(t1)); + queryParams.setEndTime(J2kSec.asDate(t2)); + queryParams.appendToNetwork(parts[2]); + queryParams.appendToStation(parts[0]); + queryParams.appendToChannel(parts[1]); + if (parts.length > 3) { + queryParams.appendToLocation(parts[3]); + } + + URI uri; + try { + uri = new URI(dataselectUri); + queryParams.setScheme(uri.getScheme()); + queryParams.setPort(uri.getPort()); + queryParams.setFdsnwsPath(uri.getPath()); + queryParams.setHost(uri.getHost()); + System.out.println(queryParams.formURI()); + } catch (URISyntaxException e) { + throw new RuntimeException( + "Cannot parse URI " + dataselectUri + ": " + e.getLocalizedMessage()); + } + + return queryParams; + } + + private FDSNDataSelectQueryParams configureParams() { + FDSNDataSelectQueryParams queryParams = new FDSNDataSelectQueryParams(); + + URI uri; + try { + uri = new URI(dataselectUri); + queryParams.setScheme(uri.getScheme()); + queryParams.setPort(uri.getPort()); + queryParams.setFdsnwsPath(uri.getPath()); + queryParams.setHost(uri.getHost()); + System.out.println(queryParams.formURI()); + } catch (URISyntaxException e) { + throw new RuntimeException( + "Cannot parse URI " + dataselectUri + ": " + e.getLocalizedMessage()); + } + + return queryParams; + } + + private static double btimeToJ2k(Btime btime) { + Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); + cal.set(Calendar.YEAR, btime.getYear()); + cal.set(Calendar.DAY_OF_YEAR, btime.getDayOfYear()); + cal.set(Calendar.HOUR_OF_DAY, btime.getHour()); + cal.set(Calendar.MINUTE, btime.getMin()); + cal.set(Calendar.SECOND, btime.getSec()); + cal.set(Calendar.MILLISECOND, btime.getTenthMilli() / 10); + Date date = cal.getTime(); + + return J2kSec.fromDate(date); + } + + private static Wave createWave(DataRecord dr, Blockette1000 b1000) + throws UnsupportedCompressionType, CodecException { + DecompressedData decomp = + new Codec().decompress(b1000.getEncodingFormat(), dr.getData(), + dr.getHeader().getNumSamples(), b1000.getWordOrder() == 0); + + Wave wave = new Wave(); + DataHeader dh = dr.getHeader(); + wave.setSamplingRate(dh.getSampleRate()); + wave.setStartTime(btimeToJ2k(dh.getStartBtime())); + wave.buffer = decomp.getAsInt(); + wave.register(); + return wave; + } + + private Wave readResponse(DataRecordIterator it) + throws SeedFormatException, IOException, UnsupportedCompressionType, CodecException { + List waves = new ArrayList(); + if (!it.hasNext()) { + System.out.println("No Data"); + } + while (it.hasNext()) { + DataRecord dr = it.next(); + for (Blockette blockette : dr.getBlockettes(1000)) { + if (blockette instanceof Blockette1000) { + waves.add(createWave(dr, (Blockette1000) blockette)); + } + } + + } + return Wave.join(waves); + } + + + @Override + public Wave getWave(String station, double t1, double t2) { + FDSNDataSelectQueryParams queryParams = configureParams(); + String[] parts = station.split("\\s+"); + String sta = parts[0]; + String cha = parts[1]; + String net = parts[2]; + String loc = ""; + if (parts.length > 3) { + loc = parts[3]; + } + + ChannelTimeWindow channelTime = new ChannelTimeWindow(net, sta, loc, cha, J2kSec.asDate(t1), J2kSec.asDate(t2)); + List request = new ArrayList(); + request.add(channelTime); + FDSNDataSelectQuerier querier = new FDSNDataSelectQuerier(queryParams, request); + if (user != null) { + querier.enableRestrictedData(user, password); + } + + DataRecordIterator it = null; + Wave wave = null; + try { + it = querier.getDataRecordIterator(); + wave = readResponse(it); + } catch (FDSNWSException e) { + System.out.println("No data found for " + station); + e.printStackTrace(); + } catch (SeisFileException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (UnsupportedCompressionType e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CodecException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } finally { + if (it != null) { + it.close(); + } + } + + return wave; + + } + + @Override + public HelicorderData getHelicorder(String station, double t1, double t2, GulperListener gl) { + throw new UnsupportedOperationException(); + } + + @Override + public String toConfigString() { + throw new UnsupportedOperationException(); + } + + @Override + public void close() { + // do nothing + } +} diff --git a/src/main/java/gov/usgs/volcanoes/pensive/Pensive.java b/src/main/java/gov/usgs/volcanoes/pensive/Pensive.java index 86c047f..3aa83a1 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/Pensive.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/Pensive.java @@ -11,6 +11,7 @@ import gov.usgs.volcanoes.pensive.schedule.BackfillPlotScheduler; import gov.usgs.volcanoes.pensive.schedule.RealtimePlotScheduler; +import org.apache.log4j.Level; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -53,7 +54,8 @@ public class Pensive { /** * Class constructor. * - * @param configFile my config file + * @param configFile + * my config file */ public Pensive(final ConfigFile configFile) { @@ -72,9 +74,12 @@ public Pensive(final ConfigFile configFile) { /** * Class constructor used for back-filling. * - * @param configFile my config file - * @param startTime time of first plot - * @param endTime time of last plot. May be in the future. + * @param configFile + * my config file + * @param startTime + * time of first plot + * @param endTime + * time of last plot. May be in the future. */ public Pensive(final ConfigFile configFile, final Date startTime, final Date endTime) { super(); @@ -235,8 +240,10 @@ public void stop() { /** * Where it all begins. * - * @param args command line args - * @throws Exception when things go wrong + * @param args + * command line args + * @throws Exception + * when things go wrong */ public static void main(final String[] args) throws Exception { final PensiveArgs config = new PensiveArgs(args); @@ -244,11 +251,16 @@ public static void main(final String[] args) throws Exception { ConfigFile cf = null; cf = new ConfigFile(config.configFileName); if (!cf.wasSuccessfullyRead()) { - LOGGER.error("Couldn't find config file " + config.configFileName - + ". Use '-c' to create an example config."); + LOGGER.error( + "Couldn't find config file " + config.configFileName + + ". Use '-c' to create an example config."); System.exit(1); } + if (config.squelchHTML) { + cf.put("writeHtml", "false", false); + } + final Pensive pensive = new Pensive(cf); if (config.startTime < 0) { pensive.createRealtimePlotSchedulers(); diff --git a/src/main/java/gov/usgs/volcanoes/pensive/PensiveArgs.java b/src/main/java/gov/usgs/volcanoes/pensive/PensiveArgs.java index 7345834..50363d7 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/PensiveArgs.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/PensiveArgs.java @@ -8,14 +8,17 @@ import com.martiansoftware.jsap.JSAPResult; import com.martiansoftware.jsap.Parameter; +import com.martiansoftware.jsap.Switch; import gov.usgs.volcanoes.core.args.Args; import gov.usgs.volcanoes.core.args.Arguments; import gov.usgs.volcanoes.core.args.decorator.ConfigFileArg; import gov.usgs.volcanoes.core.args.decorator.CreateConfigArg; -import gov.usgs.volcanoes.core.args.decorator.DateRangeArg; +import gov.usgs.volcanoes.core.args.decorator.TimeSpanArg; import gov.usgs.volcanoes.core.args.decorator.VerboseArg; +import gov.usgs.volcanoes.core.time.TimeSpan; +import org.apache.log4j.Level; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,7 +41,9 @@ public class PensiveArgs { /** format of time on cmd line */ public static final String INPUT_TIME_FORMAT = "yyyyMMddHHmm"; - private static final Parameter[] PARAMETERS = new Parameter[] {}; + private static final Parameter[] PARAMETERS = new Parameter[] { + new Switch("squelchHTML", 's', "squelchHTML", "Produce images only, no HTML."), + }; /** If true, log more. */ public final boolean verbose; @@ -49,6 +54,9 @@ public class PensiveArgs { /** Time of last plot. May be in the future. */ public final long endTime; + /** squelch HTML. */ + public final boolean squelchHTML; + /** my config file. */ public final String configFileName; @@ -62,35 +70,39 @@ public PensiveArgs(final String[] commandLineArgs) throws Exception { args = new Args(PROGRAM_NAME, EXPLANATION, PARAMETERS); args = new ConfigFileArg(DEFAULT_CONFIG_FILENAME, args); args = new CreateConfigArg(EXAMPLE_CONFIG_FILENAME, args); - args = new DateRangeArg(INPUT_TIME_FORMAT, args); + args = new TimeSpanArg(INPUT_TIME_FORMAT, false, args); args = new VerboseArg(args); JSAPResult jsapResult = null; jsapResult = args.parse(commandLineArgs); verbose = jsapResult.getBoolean("verbose"); - LOGGER.debug("Setting: verbose={}", verbose); - - final Date startDate = jsapResult.getDate("startTime"); - if (startDate == null) { - startTime = Long.MIN_VALUE; + if (verbose) { + org.apache.log4j.Logger.getRootLogger().setLevel(Level.ALL); + System.out.println("TOMP SAYS VERBOSE"); } else { - startTime = jsapResult.getDate("startTime").getTime(); + org.apache.log4j.Logger.getRootLogger().setLevel(Level.INFO); } - LOGGER.debug("Setting: startTime={}", startTime); - final Date endDate = jsapResult.getDate("endTime"); - if (endDate == null) { - endTime = Long.MIN_VALUE; + LOGGER.debug("Setting: verbose={}", verbose); + + squelchHTML = jsapResult.getBoolean("squelchHTML"); + + final TimeSpan timeSpan = (TimeSpan) jsapResult.getObject("timeSpan"); + if (timeSpan == null) { + startTime = Long.MIN_VALUE; + endTime = Long.MAX_VALUE; } else { - endTime = jsapResult.getDate("endTime").getTime(); + startTime = timeSpan.startTime; + endTime = timeSpan.endTime; } + LOGGER.debug("Setting: startTime={}", startTime); LOGGER.debug("Setting: endTime={}", endTime); configFileName = jsapResult.getString("config-filename"); LOGGER.debug("Setting: config-filename={}", configFileName); - if (jsapResult.getBoolean("create-config")) { + if (jsapResult.getBoolean("create-config") || jsapResult.getBoolean("help")) { System.exit(1); } } diff --git a/src/main/java/gov/usgs/volcanoes/pensive/PlotJob.java b/src/main/java/gov/usgs/volcanoes/pensive/PlotJob.java index 0105b13..3974ff0 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/PlotJob.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/PlotJob.java @@ -15,6 +15,10 @@ */ public class PlotJob implements Comparable { + /** if true replot the previous run */ + public static final boolean DO_PRINT_PREVIOUS = true; + public static final boolean NO_PRINT_PREVIOUS = false; + /** Time of last sample plotted. */ public final long plotEndMs; @@ -24,7 +28,6 @@ public class PlotJob implements Comparable { /** my subnet. */ public final SubnetPlotter subnet; - /** * Class constructor which uses the most recent time slice as the time of * the last sample to be plotted. @@ -32,8 +35,22 @@ public class PlotJob implements Comparable { * @param subnet my subnet */ public PlotJob(final SubnetPlotter subnet) { + this(subnet, false); + } + + /** + * Class constructor which uses the most recent time slice as the time of + * the last sample to be plotted. + * + * @param subnet my subnet + */ + public PlotJob(final SubnetPlotter subnet, boolean oneBehind) { this.subnet = subnet; - this.plotEndMs = findPlotEnd(); + long plotEndMs = findPlotEnd(); + if (oneBehind) { + plotEndMs -= SubnetPlotter.DURATION_S * 1000; + } + this.plotEndMs = plotEndMs; plotTimeMs = plotEndMs + subnet.embargoMs; } diff --git a/src/main/java/gov/usgs/volcanoes/pensive/WaveSource.java b/src/main/java/gov/usgs/volcanoes/pensive/WaveSource.java index 01f31a0..ae35113 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/WaveSource.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/WaveSource.java @@ -69,15 +69,19 @@ public WaveSource(final String name, final BlockingQueue plotJobs, final int port = config.getInt("port", DEFAULT_PORT); final int timeout = config.getInt("timeout", DEFAULT_TIMEOUT_S); final int compress = 1; - + String dsString = null; if (type.equals("wws")) { dsString = String.format("%s;wws:%s:%d:%d:%d", name, host, port, timeout * 1000, compress); + dataSource = DataSourceType.parseConfig(dsString); } else if (type.equals("wsv")) { dsString = String.format("%s;ws:%s:%d:%d:1800:1000:UTC", name, host, port, timeout * 1000); + dataSource = DataSourceType.parseConfig(dsString); + } else if (type.equals("fdsnws")) { + dataSource = new FdsnwsSource(config); + } else { + throw new RuntimeException("Unknown wave server type"); } - dataSource = DataSourceType.parseConfig(dsString); - dataSource.establish(); dataSource.setUseCache(false); } diff --git a/src/main/java/gov/usgs/volcanoes/pensive/plot/ChannelPlotter.java b/src/main/java/gov/usgs/volcanoes/pensive/plot/ChannelPlotter.java index afbc5ed..8a55ce0 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/plot/ChannelPlotter.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/plot/ChannelPlotter.java @@ -5,14 +5,15 @@ package gov.usgs.volcanoes.pensive.plot; -import gov.usgs.plot.data.SliceWave; -import gov.usgs.plot.data.Spectrogram; -import gov.usgs.plot.render.BasicFrameRenderer; -import gov.usgs.plot.render.TextRenderer; -import gov.usgs.plot.render.wave.MinuteMarkingWaveRenderer; -import gov.usgs.plot.render.wave.SliceWaveRenderer; -import gov.usgs.plot.render.wave.SpectrogramRenderer; + import gov.usgs.volcanoes.core.configfile.ConfigFile; +import gov.usgs.volcanoes.core.data.SliceWave; +import gov.usgs.volcanoes.core.data.Spectrogram; +import gov.usgs.volcanoes.core.legacy.plot.render.BasicFrameRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.TextRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.wave.MinuteMarkingWaveRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.wave.SliceWaveRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.wave.SpectrogramRenderer; import gov.usgs.volcanoes.core.time.J2kSec; import gov.usgs.volcanoes.core.time.Time; diff --git a/src/main/java/gov/usgs/volcanoes/pensive/plot/FullPlotter.java b/src/main/java/gov/usgs/volcanoes/pensive/plot/FullPlotter.java index 9b8ef4d..9d464cc 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/plot/FullPlotter.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/plot/FullPlotter.java @@ -6,10 +6,10 @@ package gov.usgs.volcanoes.pensive.plot; -import gov.usgs.plot.render.TextRenderer; -import gov.usgs.plot.render.wave.SliceWaveRenderer; -import gov.usgs.plot.render.wave.SpectrogramRenderer; import gov.usgs.volcanoes.core.configfile.ConfigFile; +import gov.usgs.volcanoes.core.legacy.plot.render.TextRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.wave.SliceWaveRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.wave.SpectrogramRenderer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/src/main/java/gov/usgs/volcanoes/pensive/plot/SubnetPlotter.java b/src/main/java/gov/usgs/volcanoes/pensive/plot/SubnetPlotter.java index 1a0b0c3..eff51df 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/plot/SubnetPlotter.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/plot/SubnetPlotter.java @@ -5,9 +5,9 @@ package gov.usgs.volcanoes.pensive.plot; -import gov.usgs.plot.Plot; -import gov.usgs.plot.PlotException; import gov.usgs.volcanoes.core.configfile.ConfigFile; +import gov.usgs.volcanoes.core.legacy.plot.Plot; +import gov.usgs.volcanoes.core.legacy.plot.PlotException; import gov.usgs.volcanoes.core.time.Time; import gov.usgs.volcanoes.pensive.Channel; import gov.usgs.volcanoes.swarm.data.SeismicDataSource; @@ -45,7 +45,8 @@ public class SubnetPlotter { private static final int DEFAULT_THUMB_WIDTH = 151; private static final int DEFAULT_THUMB_HEIGHT = 198; private static final int DEFAULT_EMBARGO = 5; - + private static final boolean DEFAULT_PRINT_PREVIOUS = false; + /** width of plot decorations in pixels. */ public static final int LABEL_HEIGHT = 35; @@ -79,6 +80,9 @@ public class SubnetPlotter { /** thumbnail dimension. */ private final Dimension thumbDimension; + /** Print the previous plot too. */ + public final boolean printPrevious; + /** Channels on this plot. */ private final List channels; @@ -99,7 +103,7 @@ public SubnetPlotter(final String networkName, final String subnetName, final Co filePathFormat = config.getString("filePathFormat", DEFAULT_FILE_PATH_FORMAT); fileSuffixFormat = config.getString("fileSuffixFormat", DEFAULT_FILE_SUFFIX_FORMAT); embargoMs = config.getInt("embargo", DEFAULT_EMBARGO) * 1000; - + printPrevious = config.getBoolean("replot", false); plotDimension = new Dimension(); plotDimension.width = config.getInt("plotWidth", DEFAULT_PLOT_WIDTH); plotDimension.height = config.getInt("plotHeight", DEFAULT_PLOT_HEIGHT); @@ -109,7 +113,7 @@ public SubnetPlotter(final String networkName, final String subnetName, final Co thumbDimension.height = config.getInt("thumbHeight", DEFAULT_THUMB_HEIGHT); channels = createChannels(config.getSubConfig(subnetName, true)); - } + } /** * Create Channel objects for each channel on this plot. diff --git a/src/main/java/gov/usgs/volcanoes/pensive/plot/ThumbnailPlotter.java b/src/main/java/gov/usgs/volcanoes/pensive/plot/ThumbnailPlotter.java index 4956d1f..6dffdc5 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/plot/ThumbnailPlotter.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/plot/ThumbnailPlotter.java @@ -6,10 +6,10 @@ package gov.usgs.volcanoes.pensive.plot; -import gov.usgs.plot.render.TextRenderer; -import gov.usgs.plot.render.wave.SliceWaveRenderer; -import gov.usgs.plot.render.wave.SpectrogramRenderer; import gov.usgs.volcanoes.core.configfile.ConfigFile; +import gov.usgs.volcanoes.core.legacy.plot.render.TextRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.wave.SliceWaveRenderer; +import gov.usgs.volcanoes.core.legacy.plot.render.wave.SpectrogramRenderer; import java.awt.Dimension; import java.awt.Font; diff --git a/src/main/java/gov/usgs/volcanoes/pensive/schedule/RealtimePlotScheduler.java b/src/main/java/gov/usgs/volcanoes/pensive/schedule/RealtimePlotScheduler.java index 5da4306..fa37f94 100644 --- a/src/main/java/gov/usgs/volcanoes/pensive/schedule/RealtimePlotScheduler.java +++ b/src/main/java/gov/usgs/volcanoes/pensive/schedule/RealtimePlotScheduler.java @@ -37,6 +37,10 @@ protected void schedulePlots() { try { LOGGER.info("Scheduling subnet " + subnet.subnetName); plotJobs.put(new PlotJob(subnet)); + if (subnet.printPrevious) { + LOGGER.info("Scheduling previous plot for subnet " + subnet.subnetName); + plotJobs.put(new PlotJob(subnet, PlotJob.DO_PRINT_PREVIOUS)); + } } catch (final InterruptedException e) { LOGGER.info("Interrupted. Unable to schedule " + subnet.subnetName); } diff --git a/src/main/resources/html/pensive.js b/src/main/resources/html/pensive.js index fd6d070..973e0eb 100644 --- a/src/main/resources/html/pensive.js +++ b/src/main/resources/html/pensive.js @@ -86,9 +86,13 @@ function init() { }); // fire subnet change trigger to get things rolling - <#if selectedNetwork??> - $("#network").val("${selectedNetwork}").prop('selected', true); - + <#if selectedNetwork??> + + param = getUrlParameter("network"); + if (param == null) { + $("#network").val("${selectedNetwork}").prop('selected', true); + } + $("#network").trigger("change"); } diff --git a/src/test/java/gov/usgs/volcanoes/pensive/args/ArgsTest.java b/src/test/java/gov/usgs/volcanoes/pensive/args/ArgsTest.java deleted file mode 100644 index dd6af59..0000000 --- a/src/test/java/gov/usgs/volcanoes/pensive/args/ArgsTest.java +++ /dev/null @@ -1,50 +0,0 @@ -package gov.usgs.volcanoes.pensive.args; - -import static org.junit.Assert.assertEquals; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.TimeZone; - -import org.junit.Before; -import org.junit.Ignore; -import org.junit.Test; - -import com.martiansoftware.jsap.JSAPException; - -import gov.usgs.volcanoes.pensive.PensiveArgs; - -public class ArgsTest { - - private static final String START_DATE = "201510110000"; - private static final String END_DATE = "201510120000"; - - PensiveArgs args; - String[] commandLineArgs = { "-s", START_DATE, "-e", END_DATE }; - SimpleDateFormat format; - - @Before - public void setup() throws Exception { - - args = new PensiveArgs(commandLineArgs); - format = new SimpleDateFormat(PensiveArgs.INPUT_TIME_FORMAT); - format.setTimeZone(TimeZone.getTimeZone("UTC")); - } - - @Test - public void startTimeArg() throws ParseException { - long givenTime = format.parse(START_DATE).getTime(); - long derivedTime = args.startTime; - - assertEquals(derivedTime, givenTime); - } - - @Test - public void endTimeArg() throws ParseException { - long givenTime = format.parse(END_DATE).getTime(); - long derivedTime = args.endTime; - - assertEquals(derivedTime, givenTime); - } - -}