diff --git a/.classpath b/.classpath index 2c47e4f..677371b 100644 --- a/.classpath +++ b/.classpath @@ -7,7 +7,7 @@ - + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs index a698e59..7a4c51e 100644 --- a/.settings/org.eclipse.jdt.core.prefs +++ b/.settings/org.eclipse.jdt.core.prefs @@ -10,3 +10,353 @@ 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.8 +org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false +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.align_variable_declarations_on_columns=false +org.eclipse.jdt.core.formatter.align_with_spaces=false +org.eclipse.jdt.core.formatter.alignment_for_additive_operator=16 +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_bitwise_operator=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_if=16 +org.eclipse.jdt.core.formatter.alignment_for_compact_loops=16 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80 +org.eclipse.jdt.core.formatter.alignment_for_conditional_expression_chain=0 +org.eclipse.jdt.core.formatter.alignment_for_enum_constants=48 +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_logical_operator=16 +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_multiplicative_operator=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_relational_operator=0 +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_shift_operator=0 +org.eclipse.jdt.core.formatter.alignment_for_string_concatenation=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=1 +org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1 +org.eclipse.jdt.core.formatter.blank_lines_before_method=1 +org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1 +org.eclipse.jdt.core.formatter.blank_lines_before_package=0 +org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1 +org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1 +org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=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=next_line +org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=next_line +org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=next_line +org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_lambda_body=end_of_line +org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=next_line +org.eclipse.jdt.core.formatter.brace_position_for_switch=next_line +org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=next_line +org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped=false +org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions=false +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=true +org.eclipse.jdt.core.formatter.comment.format_block_comments=true +org.eclipse.jdt.core.formatter.comment.format_header=false +org.eclipse.jdt.core.formatter.comment.format_html=true +org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=true +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.indent_tag_description=false +org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert +org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=insert +org.eclipse.jdt.core.formatter.comment.line_length=120 +org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true +org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true +org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false +org.eclipse.jdt.core.formatter.compact_else_if=true +org.eclipse.jdt.core.formatter.continuation_indentation=2 +org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2 +org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off +org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on +org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false +org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=false +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=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert +org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=insert +org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert +org.eclipse.jdt.core.formatter.insert_space_after_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_case=insert +org.eclipse.jdt.core.formatter.insert_space_after_arrow_in_switch_default=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_bitwise_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_switch_case_expressions=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_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_multiplicative_operator=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_relational_operator=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_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_after_string_concatenation=insert +org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert +org.eclipse.jdt.core.formatter.insert_space_before_additive_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert +org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_case=insert +org.eclipse.jdt.core.formatter.insert_space_before_arrow_in_switch_default=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_bitwise_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_switch_case_expressions=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_logical_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_multiplicative_operator=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_relational_operator=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_shift_operator=insert +org.eclipse.jdt.core.formatter.insert_space_before_string_concatenation=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_annotation_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_anonymous_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_code_block_on_one_line=one_line_never +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_enum_constant_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_enum_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_if_then_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false +org.eclipse.jdt.core.formatter.keep_lambda_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_loop_body_block_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_method_body_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.keep_simple_do_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_for_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_simple_getter_setter_on_one_line=false +org.eclipse.jdt.core.formatter.keep_simple_while_body_on_same_line=false +org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false +org.eclipse.jdt.core.formatter.keep_type_declaration_on_one_line=one_line_never +org.eclipse.jdt.core.formatter.lineSplit=120 +org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=true +org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=true +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.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=true +org.eclipse.jdt.core.formatter.tabulation.char=tab +org.eclipse.jdt.core.formatter.tabulation.size=3 +org.eclipse.jdt.core.formatter.use_on_off_tags=true +org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false +org.eclipse.jdt.core.formatter.wrap_before_additive_operator=true +org.eclipse.jdt.core.formatter.wrap_before_assignment_operator=false +org.eclipse.jdt.core.formatter.wrap_before_bitwise_operator=true +org.eclipse.jdt.core.formatter.wrap_before_conditional_operator=true +org.eclipse.jdt.core.formatter.wrap_before_logical_operator=true +org.eclipse.jdt.core.formatter.wrap_before_multiplicative_operator=true +org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true +org.eclipse.jdt.core.formatter.wrap_before_relational_operator=true +org.eclipse.jdt.core.formatter.wrap_before_shift_operator=true +org.eclipse.jdt.core.formatter.wrap_before_string_concatenation=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/doc/QuickStartGuide.odt b/doc/QuickStartGuide.odt new file mode 100644 index 0000000..d5ac774 Binary files /dev/null and b/doc/QuickStartGuide.odt differ diff --git a/doc/QuickStartGuide.pdf b/doc/QuickStartGuide.pdf new file mode 100644 index 0000000..b326fe0 Binary files /dev/null and b/doc/QuickStartGuide.pdf differ diff --git a/doc/ReadMe.txt b/doc/ReadMe.txt new file mode 100644 index 0000000..616f8e3 --- /dev/null +++ b/doc/ReadMe.txt @@ -0,0 +1,39 @@ +Product: DistMaker +Version: 0.57 + + + +Requires: +- Java 8 +- Python 2.7 + + + +Directions: +DistMaker is a software toolkit which allows a software developer to develop +applications that have a builtin update mechanism. + +The update mechanism can be manually triggered by an end user or through an an +auto update mechanism. + +DistMaker provides a capability to allows a software developer to deploy (or +remove) updates to a deployment site. + +Please read the ./doc/QuickStartGuide.pdf for instructions on updating an +application to make it DistMaker enabled. This brief guide will provide +directions for: +- Source code changes to make the application DistMaker enabled +- Setting up the deploy site for the DistMaker application +- Deploying the DistMaker application + + + +Legal Notice: +DistMaker utilizes a number of copyrighted products. A listing of all copyrights +can be found in the folder: + ./doc/legal/ + +Each copyrighted product has a textual file with a naming convention of: + License..txt +Note that corresponds to the formal product name. + diff --git a/doc/legal/License.ApacheCommonsCompress.txt b/doc/legal/License.ApacheCommonsCompress.txt new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/doc/legal/License.ApacheCommonsCompress.txt @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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/doc/legal/License.DistMaker.txt b/doc/legal/License.DistMaker.txt new file mode 100644 index 0000000..a6f996c --- /dev/null +++ b/doc/legal/License.DistMaker.txt @@ -0,0 +1,20 @@ + +© 2021 The Johns Hopkins University Applied Physics Laboratory LLC (JHU/APL). +All Rights Reserved. + +This material may be only be used, modified, or reproduced by or for the U.S. +Government pursuant to the license rights granted under the clauses at DFARS +252.227-7013/7014 or FAR 52.227-14. For any other permission, please contact the +Office of Technology Transfer at JHU/APL. + +NO WARRANTY, NO LIABILITY. THIS MATERIAL IS PROVIDED “AS IS.” JHU/APL MAKES NO +REPRESENTATION OR WARRANTY WITH RESPECT TO THE PERFORMANCE OF THE MATERIALS, +INCLUDING THEIR SAFETY, EFFECTIVENESS, OR COMMERCIAL VIABILITY, AND DISCLAIMS +ALL WARRANTIES IN THE MATERIAL, WHETHER EXPRESS OR IMPLIED, INCLUDING (BUT NOT +LIMITED TO) ANY AND ALL IMPLIED WARRANTIES OF PERFORMANCE, MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT OF INTELLECTUAL PROPERTY +OR OTHER THIRD PARTY RIGHTS. ANY USER OF THE MATERIAL ASSUMES THE ENTIRE RISK +AND LIABILITY FOR USING THE MATERIAL. IN NO EVENT SHALL JHU/APL BE LIABLE TO ANY +USER OF THE MATERIAL FOR ANY ACTUAL, INDIRECT, CONSEQUENTIAL, SPECIAL OR OTHER +DAMAGES ARISING FROM THE USE OF, OR INABILITY TO USE, THE MATERIAL, INCLUDING, +BUT NOT LIMITED TO, ANY DAMAGES FOR LOST PROFITS. diff --git a/doc/legal/License.GlumTableSorter.txt b/doc/legal/License.GlumTableSorter.txt new file mode 100644 index 0000000..9c63512 --- /dev/null +++ b/doc/legal/License.GlumTableSorter.txt @@ -0,0 +1,29 @@ + +Copyright (c) 1995, 2008, Oracle and/or its affiliates. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + - Neither the name of Oracle or the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/doc/legal/License.Guava.txt b/doc/legal/License.Guava.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/doc/legal/License.Guava.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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/doc/legal/License.Launch4J.txt b/doc/legal/License.Launch4J.txt new file mode 100644 index 0000000..38af528 --- /dev/null +++ b/doc/legal/License.Launch4J.txt @@ -0,0 +1,30 @@ +Launch4j (http://launch4j.sourceforge.net/) +Cross-platform Java application wrapper for creating Windows native executables. + +Copyright (c) 2004, 2017 Grzegorz Kowal +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors + may be used to endorse or promote products derived from this software without + specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. \ No newline at end of file diff --git a/doc/legal/License.MigLayout.txt b/doc/legal/License.MigLayout.txt new file mode 100644 index 0000000..7779a86 --- /dev/null +++ b/doc/legal/License.MigLayout.txt @@ -0,0 +1,28 @@ + +License (BSD): +============== + +Copyright (c) 2004, Mikael Grev, MiG InfoCom AB. (miglayout (at) miginfocom (dot) com) +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, +are permitted provided that the following conditions are met: +Redistributions of source code must retain the above copyright notice, this list +of conditions and the following disclaimer. +Redistributions in binary form must reproduce the above copyright notice, this +list of conditions and the following disclaimer in the documentation and/or other +materials provided with the distribution. +Neither the name of the MiG InfoCom AB nor the names of its contributors may be +used to endorse or promote products derived from this software without specific +prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, +INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, +OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY +OF SUCH DAMAGE. diff --git a/lib/glum-1.3-sources.jar b/lib/glum-1.3-sources.jar deleted file mode 100644 index 98237c6..0000000 Binary files a/lib/glum-1.3-sources.jar and /dev/null differ diff --git a/lib/glum-1.3.7-src.jar b/lib/glum-1.3.7-src.jar new file mode 100644 index 0000000..5344327 Binary files /dev/null and b/lib/glum-1.3.7-src.jar differ diff --git a/lib/glum-1.3.7.jar b/lib/glum-1.3.7.jar new file mode 100644 index 0000000..129a0c7 Binary files /dev/null and b/lib/glum-1.3.7.jar differ diff --git a/lib/glum-1.3.jar b/lib/glum-1.3.jar deleted file mode 100644 index 3cbf1de..0000000 Binary files a/lib/glum-1.3.jar and /dev/null differ diff --git a/script/appleUtils.py b/script/appleUtils.py index 3e5341a..8f82f1c 100644 --- a/script/appleUtils.py +++ b/script/appleUtils.py @@ -284,7 +284,7 @@ def buildDistTree(aBuildPath, aRootPath, aArgs, aJreNode): # Update the .DS_Store file to reflect the new volume name srcPath = os.path.join(aRootPath, '.DS_Store') - classPath = appInstallRoot + '/lib/glum-1.3.jar:' + appInstallRoot + '/lib/distMaker.jar:' + appInstallRoot + '/lib/guava-18.0.jar' + classPath = appInstallRoot + '/lib/glum-1.3.7.jar:' + appInstallRoot + '/lib/distMaker.jar:' + appInstallRoot + '/lib/guava-18.0.jar' cmd = ['java', '-cp', classPath, 'dsstore.MainApp', srcPath, appName] proc = miscUtils.executeAndLog(cmd, "\t\tdsstore.MainApp: ") if proc.returncode != 0: diff --git a/script/deployJreDist.py b/script/deployJreDist.py index f73791d..a63d49c 100755 --- a/script/deployJreDist.py +++ b/script/deployJreDist.py @@ -407,7 +407,7 @@ if __name__ == "__main__": errMsg = None if jreCatalog == None: - errMsg = 'A JRE catalog must be specified! Please specify -jreCatalog' + errMsg = 'A JRE catalog must be specified! Please specify --jreCatalog' elif os.path.exists(jreCatalog) == False: errMsg = 'The specified JRE catalog does not exist! File: ' + jreCatalog elif os.path.isfile(jreCatalog) == False: diff --git a/src/distMaker/DistApp.java b/src/distMaker/DistApp.java index 22a7f19..e6aeab5 100644 --- a/src/distMaker/DistApp.java +++ b/src/distMaker/DistApp.java @@ -1,18 +1,21 @@ package distMaker; -import distMaker.utils.PlainVersion; -import distMaker.utils.Version; +import glum.version.PlainVersion; +import glum.version.Version; /** - * Provides main entry point. - *

- * Currently this will just print the library name and the version. This is used during the build process for making - * Distmaker releases. + * Provides the main entry point. + *

+ * Application prints the library name and version. + *

+ * This is used during the build process for making DistMaker releases. + * + * @author lopeznr1 */ public class DistApp { /** The DistMaker version is defined here. */ - public static final Version version = new PlainVersion(0, 56, 0); + public static final Version version = new PlainVersion(0, 57, 0); /** * Main entry point that will print out the version of DistMaker to stdout. diff --git a/src/distMaker/DistMakerEngine.java b/src/distMaker/DistMakerEngine.java index abe3bf5..19cad78 100644 --- a/src/distMaker/DistMakerEngine.java +++ b/src/distMaker/DistMakerEngine.java @@ -18,7 +18,6 @@ import distMaker.gui.PickReleasePanel; import distMaker.jre.*; import distMaker.node.*; import distMaker.platform.*; -import distMaker.utils.Version; import glum.digest.Digest; import glum.gui.panel.generic.MessagePanel; import glum.gui.panel.generic.PromptPanel; @@ -29,15 +28,16 @@ import glum.net.NetUtil; import glum.task.*; import glum.unit.DateUnit; import glum.util.ThreadUtil; +import glum.version.Version; /** * Primary controller class of DistMaker package. This class provides the following functionality: - *

    - *
  • Management of initialization stage of DistMaker application. - *
  • Fetching and downloading of application updates. - *
  • Fetching and downloading of JRE updates. - *
  • Applying or reverting of an update. - *
+ *
    + *
  • Management of initialization stage of DistMaker application. + *
  • Fetching and downloading of application updates. + *
  • Fetching and downloading of JRE updates. + *
  • Applying or reverting of an update. + *
* * @author lopeznr1 */ @@ -115,10 +115,12 @@ public class DistMakerEngine /** * Returns the currently running release of this software package. - *

+ *

* Note this method may return null if we are: - *

  • running from a developers environment (Ex: Eclipse IDE) - *
  • If the software application was not properly packaged (or has become corrupt) with DistMaker. + *
      + *
    • running from a developers environment (Ex: Eclipse IDE) + *
    • If the software application was not properly packaged (or has become corrupt) with DistMaker. + *
    */ public AppRelease getCurrentRelease() { @@ -262,7 +264,7 @@ public class DistMakerEngine /** * Helper method that does the heavy lifting of the checking for updates. - *

    + *

    * This method will be called via reflection. */ private void checkForUpdatesWorker(FullTaskPanel aTask, UpdateCheckListener aListener) @@ -399,9 +401,9 @@ public class DistMakerEngine /** * Helper method to show an informative message on msgPanel and execute the specified runnable. - *

    + *

    * If isModal == true then aRunnable will only be executed after the msgPanel has been accepted. - *

    + *

    * The runnable will not be run until the parentFrame is visible. */ private void displayNoticeAndExecute(final String aMsg, final Runnable aRunnable, final boolean isModal) @@ -450,7 +452,7 @@ public class DistMakerEngine /** * Helper method to download the specified release. - *

    + *

    * Returns true if the release was downloaded properly. */ private boolean downloadAppRelease(Task aTask, AppRelease aRelease, File aDestPath) @@ -714,7 +716,7 @@ public class DistMakerEngine /** * Class used to store a complex 'tuple' value. - *

    + *

    * This object is used to store the results of a successful JRE update. */ private class JreUpdateResult @@ -732,7 +734,7 @@ public class DistMakerEngine /** * Helper method to download a compatible JreRelease for the AppCatalog to the specified destPath. - *

    + *

    * On success the JreVersion that was downloaded is returned. */ private JreUpdateResult downloadJreUpdate(Task aTask, AppCatalog aUpdateCat, File aDestPath, long releaseSizeFull) @@ -863,18 +865,18 @@ public class DistMakerEngine /** * Helper method that "reverts" an update. After this method is called the DistMaker application's configuration * should be in the same state as before an update was applied. - *

    + *

    * It is necessary to do this, since the user may later cancel the update request and it is important to leave the * program and configuration files in a stable state. - *

    + *

    * An update will be reverted by doing: - *

      - *
    • Reverting the configuration to the currently running JRE and AppRelease - *
    • Executing the 'fail' section of the file: delta/delta.cfg - *
    • Removing the delta directory - *
    • Removing the delta.cfg file - *
    - *

    + *

      + *
    • Reverting the configuration to the currently running JRE and AppRelease + *
    • Executing the 'fail' section of the file: delta/delta.cfg + *
    • Removing the delta directory + *
    • Removing the delta.cfg file + *
    + *

    * There should not be any issues with this roll back process. However if there are, a best effort will be made to * continue rolling back the updates - note that the application might be in an unstable state - and may not be able * to be restarted. @@ -1051,7 +1053,7 @@ public class DistMakerEngine /** * Helper method that prompts the user for forms of input depending on the state of the App - *

    + *

    * This method will be called via reflection. */ private void queryUserForInput(Task aTask, File aDeltaPath, List aFullList) diff --git a/src/distMaker/DistUtils.java b/src/distMaker/DistUtils.java index 99b3fb0..a41cd45 100644 --- a/src/distMaker/DistUtils.java +++ b/src/distMaker/DistUtils.java @@ -21,6 +21,8 @@ import glum.reflect.ReflectUtil; import glum.task.Task; import glum.unit.DateUnit; import glum.util.ThreadUtil; +import glum.version.PlainVersion; +import glum.version.Version; /** * Collection of utility methods used to access the state of a DistMaker enabled application. @@ -51,7 +53,7 @@ public class DistUtils /** * Utility method to return the version of the AppLauncher that started this process. - *

    + *

    * If we are running in a developers environment then this value will be null. */ public static Version getAppLauncherVersion() @@ -75,7 +77,7 @@ public class DistUtils /** * Utility method to determine the path where the application is installed. - *

    + *

    * If this application is not a formal DistMaker application, then the working directory will be returned. */ public static File getAppPath() @@ -450,7 +452,7 @@ public class DistUtils /** * Utility method to switch the DistMaker library into debug mode. You should never call this method unless you are * modifying the DistMaker library. - *

    + *

    * This functionality only exists to allow rapid development of DistMaker */ public static void setDebugDeveloperDetails(int aUpdateCode, String aUpdateMsg, File aDevelopAppPath) diff --git a/src/distMaker/MiscUtils.java b/src/distMaker/MiscUtils.java index 1832383..85f7c36 100644 --- a/src/distMaker/MiscUtils.java +++ b/src/distMaker/MiscUtils.java @@ -32,9 +32,9 @@ public class MiscUtils { /** * Utility method to convert a Unix base-10 mode into the equivalent string. - *

    + *

    * Example: 493 -> 'rwxr-xr-x' - *

    + *

    * The returned string will always be of length 9 */ public static String convertUnixModeToStr(int aMode) @@ -52,9 +52,9 @@ public class MiscUtils /** * Utility method to convert a Unix base-10 mode into the Set. - *

    + *

    * Example: 493 -> 'rwxr-xr-x' - *

    + *

    * The returned string will always be of length 9 */ public static Set convertUnixModeToPFP(int aMode) @@ -112,7 +112,7 @@ public class MiscUtils /** * Returns the relative path component of aAbsolutePath relative to aBasePath. - *

    + *

    * Returns null if aAbsolutePath does not start with aBasePath. */ public static String getRelativePath(File aBasePath, File aAbsolutePath) @@ -129,7 +129,7 @@ public class MiscUtils /** * Utility method that returns a BufferedReader corresponding to the specified file. - *

    + *

    * This helps reduce boiler plate code. */ public static BufferedReader openFileAsBufferedReader(File aFile) throws IOException @@ -139,7 +139,7 @@ public class MiscUtils /** * Helper method that prints the exception of ErrorDM in an intelligent fashion to the specified task. - *

    + *

    * All ErrorDM exceptions (and their causes) will be printed. If the cause is not of type ErrorDM then the stack * trace will be printed as well. */ @@ -173,10 +173,10 @@ public class MiscUtils /** * Unpacks an input file into an output file. - *

    - * Source based off of:
    + *

    + * Source based off of:
    * http://stackoverflow.com/questions/315618/how-do-i-extract-a-tar-file-in-java/7556307#7556307 - *

    + *

    * The output file is created in the output folder, having the same name as the input file, minus the '.tar' * extension. * @@ -314,7 +314,7 @@ public class MiscUtils /** * Helper method to output the specified strings to aFile - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void writeDoc(File aFile, List aStrL) diff --git a/src/distMaker/gui/MemoryConfigPanel.java b/src/distMaker/gui/MemoryConfigPanel.java index 0527eec..5fb40f9 100644 --- a/src/distMaker/gui/MemoryConfigPanel.java +++ b/src/distMaker/gui/MemoryConfigPanel.java @@ -12,7 +12,6 @@ import java.lang.management.ManagementFactory; import java.util.List; import javax.swing.*; -import javax.swing.border.BevelBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -36,7 +35,7 @@ import net.miginfocom.swing.MigLayout; /** * User input component that configures the applications memory usage. Changes will not take effect until the * application is restarted. - * + * * @author lopeznr1 */ public class MemoryConfigPanel extends GlassPanel implements ActionListener, ListSelectionListener @@ -61,7 +60,7 @@ public class MemoryConfigPanel extends GlassPanel implements ActionListener, Lis /** * Constructor where the developer specifies the max heap memory. Be careful about using this method, as if a value * is specified too large, then the program may become non operational on the next run. - *

    + *

    * Should the program become non operational then the end user would have to manually configure the config/script * files by hand or a reinstall would be required. */ @@ -176,7 +175,7 @@ public class MemoryConfigPanel extends GlassPanel implements ActionListener, Lis // Title Area titleL = new JLabel("App Memory Configuration", JLabel.CENTER); // this text gets replaced once the curent version - // status is known + // status is known add(titleL, "gapbottom 15,growx,span 2,wrap"); //GTextField maxMemTF; @@ -228,8 +227,6 @@ public class MemoryConfigPanel extends GlassPanel implements ActionListener, Lis add(resetB, ""); add(closeB, ""); - setBorder(new BevelBorder(BevelBorder.RAISED)); - // Configure the slider to be aware of the new memory range targMemS.setModelRange(memSizeRange); targMemS.setModelValue(currMemSize); @@ -275,7 +272,7 @@ public class MemoryConfigPanel extends GlassPanel implements ActionListener, Lis /** * Utility method to round (floor) values to the nearest megabyte. The returned value is guaranteed to be at least 1 * megabyte. - *

    + *

    * The input value, aSize, should be specified in bytes, and the returned value will be specified in bytes. */ private long roundToMB(long aSize) diff --git a/src/distMaker/gui/PickReleasePanel.java b/src/distMaker/gui/PickReleasePanel.java index 77ece23..8b2f4c4 100644 --- a/src/distMaker/gui/PickReleasePanel.java +++ b/src/distMaker/gui/PickReleasePanel.java @@ -1,14 +1,12 @@ package distMaker.gui; import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; +import java.awt.event.*; import java.util.Collections; import java.util.LinkedList; import java.util.List; import javax.swing.*; -import javax.swing.border.BevelBorder; import javax.swing.border.EmptyBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; @@ -31,7 +29,7 @@ import net.miginfocom.swing.MigLayout; * * @author lopeznr1 */ -public class PickReleasePanel extends GlassPanel implements ActionListener, ListSelectionListener +public class PickReleasePanel extends GlassPanel implements ActionListener, ItemListener, ListSelectionListener { // Constants private static final long serialVersionUID = 1L; @@ -163,6 +161,12 @@ public class PickReleasePanel extends GlassPanel implements ActionListener, List } } + @Override + public void itemStateChanged(ItemEvent aEvent) + { + updateGui(); + } + @Override public void valueChanged(ListSelectionEvent aEvent) { @@ -192,11 +196,11 @@ public class PickReleasePanel extends GlassPanel implements ActionListener, List add(headTA, "w 0::,growx,span,wrap"); // Latest version area - newestRB = GuiUtil.createJRadioButton("Unspecified", this, smallFont); + newestRB = GuiUtil.createJRadioButton(this, "Unspecified", smallFont); newestRB.setSelected(true); // Older version area - olderRB = GuiUtil.createJRadioButton("Select an older release:", this, smallFont); + olderRB = GuiUtil.createJRadioButton(this, "Select an older release:", smallFont); listPanel = buildItemListTablePanel(); listPanel.setBorder(new EmptyBorder(0, 15, 0, 0)); @@ -228,8 +232,6 @@ public class PickReleasePanel extends GlassPanel implements ActionListener, List proceedB = GuiUtil.createJButton("Proceed", this, smallFont); add(abortB, "align right,span,split 2"); add(proceedB, ""); - - setBorder(new BevelBorder(BevelBorder.RAISED)); } /** diff --git a/src/distMaker/jre/AppLauncherRelease.java b/src/distMaker/jre/AppLauncherRelease.java index 4ec0571..c4b0826 100644 --- a/src/distMaker/jre/AppLauncherRelease.java +++ b/src/distMaker/jre/AppLauncherRelease.java @@ -1,11 +1,11 @@ package distMaker.jre; -import distMaker.utils.*; import glum.digest.Digest; +import glum.version.*; /** * Immutable class that describes an AppLauncher release. - *

    + *

    * The reference fileName should be a jar file. * * @author lopeznr1 diff --git a/src/distMaker/jre/AppLauncherUtils.java b/src/distMaker/jre/AppLauncherUtils.java index 6dd78f5..38add77 100644 --- a/src/distMaker/jre/AppLauncherUtils.java +++ b/src/distMaker/jre/AppLauncherUtils.java @@ -18,6 +18,7 @@ import glum.net.NetUtil; import glum.task.PartialTask; import glum.task.Task; import glum.util.ThreadUtil; +import glum.version.*; /** * Collection of utility methods associated with the DistMaker's AppLauncher. @@ -27,7 +28,7 @@ import glum.util.ThreadUtil; public class AppLauncherUtils { /** - * Returns a list of all the available AppLauncher releases specified at:
    + * Returns a list of all the available AppLauncher releases specified at:
    * {@literal /launcher/appCatalog.txt} */ public static List getAvailableAppLauncherReleases(Task aTask, URL aUpdateSiteUrl, @@ -151,7 +152,7 @@ public class AppLauncherUtils /** * Utility method that checks to see if the AppLauncher will need be updated in order to support the specified JRE. - *

    + *

    * Returns false if the AppLauncher does NOT need be updated. Otherwise true will be returned and the version info * will be logged to the specified aTask. */ @@ -181,16 +182,16 @@ public class AppLauncherUtils /** * Utility method that will return the AppLauncherRelease that satisfies the requirements as specified by the * JreRelease. - *

    + *

    * Returns null if no AppLauncherRelease is located that can satisfy the specified JreRelease. - *

    + *

    * Any issues that cropped up while searching for a valid AppLauncherRelease will be logged to the specified task, * aTask. - *

    + *

    * TODO: Remove the comments below - *

    + *

    * corresponding to the AppLauncher that we to the specified version required by this JRE. - *

    + *

    * Returns false on any failure. */ public static AppLauncherRelease updateAppLauncher(Task aTask, JreRelease aJreRelease, File aDestPath, diff --git a/src/distMaker/jre/JreRelease.java b/src/distMaker/jre/JreRelease.java index 1ebf6bb..f8586c9 100644 --- a/src/distMaker/jre/JreRelease.java +++ b/src/distMaker/jre/JreRelease.java @@ -2,8 +2,8 @@ package distMaker.jre; import distMaker.platform.Architecture; import distMaker.platform.Platform; -import distMaker.utils.Version; import glum.digest.Digest; +import glum.version.Version; /** * Immutable class that describes a JRE Release. diff --git a/src/distMaker/jre/JreUtils.java b/src/distMaker/jre/JreUtils.java index 1ad325b..bc29ab0 100644 --- a/src/distMaker/jre/JreUtils.java +++ b/src/distMaker/jre/JreUtils.java @@ -7,7 +7,6 @@ import java.util.*; import distMaker.platform.*; import distMaker.utils.ParseUtils; -import distMaker.utils.PlainVersion; import glum.digest.Digest; import glum.digest.DigestType; import glum.io.IoUtil; @@ -16,6 +15,7 @@ import glum.net.Credential; import glum.net.NetUtil; import glum.task.Task; import glum.util.ThreadUtil; +import glum.version.PlainVersion; /** * Collection of utility methods that provide JRE related functionality. @@ -26,11 +26,11 @@ public class JreUtils { /** * Returns the relative path a JRE should be expanded to. - *

    - * Namely legacy JRE versions (versions prior to Java 9) will be expanded to:
    - * {@code }
    - * while non legacy versions will be expanded to something like:
    - * {@code -} + *

    + * Namely legacy JRE versions (versions prior to Java 9) will be expanded to:
    + * {@code }
    + * while non legacy versions will be expanded to something like:
    + * {@code -} */ public static String getExpandJrePath(JreVersion aJreVersion) { @@ -44,7 +44,7 @@ public class JreUtils } /** - * Returns a list of all the available JRE releases specified at:
    + * Returns a list of all the available JRE releases specified at:
    * {@literal /jre/jreCatalog.txt} */ public static List getAvailableJreReleases(Task aTask, URL aUpdateSiteUrl, Credential aCredential) @@ -278,9 +278,9 @@ public class JreUtils /** * Utility method that returns the platform of the JRE file. - *

    + *

    * This only examines the filename to determine the platform. - *

    + *

    * This method should be considered deprecated as of DistMaker 0.48 */ @Deprecated diff --git a/src/distMaker/jre/JreVersion.java b/src/distMaker/jre/JreVersion.java index d15f6ea..c067fc4 100644 --- a/src/distMaker/jre/JreVersion.java +++ b/src/distMaker/jre/JreVersion.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import com.google.common.collect.ImmutableList; -import distMaker.utils.Version; import glum.io.ParseUtil; +import glum.version.Version; /** * Immutable class which defines a Java version. @@ -58,9 +58,9 @@ public class JreVersion implements Comparable, Version /** * Utility method that returns the better version. - *

    + *

    * The better version is defined as the later version (and the more specific version). - *

    + *

    * Returns null if the better version can not be determined or if the versions are equal. */ public static JreVersion getBetterVersion(JreVersion verA, JreVersion verB) diff --git a/src/distMaker/node/AppCatalog.java b/src/distMaker/node/AppCatalog.java index f75b899..886ed78 100644 --- a/src/distMaker/node/AppCatalog.java +++ b/src/distMaker/node/AppCatalog.java @@ -34,7 +34,7 @@ public class AppCatalog /** * Returns the most recent {@link JreRelease} from the specified list that is compatible with this * {@link AppCatalog}. - *

    + *

    * Returns null if there are no {@link JreRelease} that is compatible. */ public JreRelease getCompatibleJre(List aJreL) @@ -129,8 +129,8 @@ public class AppCatalog /** * Helper method to form the map used to quickly locate a Node with the corresponding filename. - *

    - * TODO: This should be renamed formNameMap to formDigestMap
    + *

    + * TODO: This should be renamed formNameMap to formDigestMap
    * TODO: This should probably be a mapping of Digest to Node rather than filename to Node */ private Map formNameMap(List aNodeL) diff --git a/src/distMaker/node/AppRelease.java b/src/distMaker/node/AppRelease.java index 0b3c68a..9f9b717 100644 --- a/src/distMaker/node/AppRelease.java +++ b/src/distMaker/node/AppRelease.java @@ -4,7 +4,17 @@ import distMaker.LookUp; import glum.database.QueryItem; /** - * Immutable object that has information relevant to the packaged software. + * Immutable object that defines attributes associated with a specific release. + * + * The following attributes are associated with the release: + *

      + *
    • Application name + *
    • Version of the application + *
    • Build time of the application + *
    • Informational message associated with the release. + *
    + * + * @author lopeznr1 */ public class AppRelease implements Comparable, QueryItem { @@ -20,7 +30,7 @@ public class AppRelease implements Comparable, QueryItem buildTime = aBuildTime; infoMsg = aInfoMsg; } - + public AppRelease(String aAppName, String aVersion, long aBuildTime) { this(aAppName, aVersion, aBuildTime, null); @@ -49,10 +59,10 @@ public class AppRelease implements Comparable, QueryItem { return buildTime; } - + /** * Returns the info message associated with this release. - *

    + *

    * Returns null if no infoMsg has been specified. */ public String getInfoMsg() @@ -77,13 +87,13 @@ public class AppRelease implements Comparable, QueryItem switch (aEnum) { case BuildTime: - return buildTime; + return buildTime; case Version: - return version; + return version; default: - return null; + return null; } } diff --git a/src/distMaker/node/FileNode.java b/src/distMaker/node/FileNode.java index 5b62bf3..5f1ac62 100644 --- a/src/distMaker/node/FileNode.java +++ b/src/distMaker/node/FileNode.java @@ -10,8 +10,8 @@ import glum.net.NetUtil; import glum.task.Task; /** - * Immutable node describing a File. - * + * Immutable {@link Node} describing a File. + * * @author lopeznr1 */ public class FileNode implements Node @@ -21,6 +21,7 @@ public class FileNode implements Node private final String fileName; private final long fileLen; + /** Standard Constructor */ public FileNode(URL aRootUrl, String aFileName, Digest aDigest, long aFileLen) { rootUrl = aRootUrl; diff --git a/src/distMaker/node/Node.java b/src/distMaker/node/Node.java index f66eb1c..22ced2c 100644 --- a/src/distMaker/node/Node.java +++ b/src/distMaker/node/Node.java @@ -1,13 +1,17 @@ package distMaker.node; +import java.io.File; + import glum.net.Credential; import glum.task.Task; -import java.io.File; - +/** + * Interface which provides an abstraction of specific data resource. + * + * @author lopeznr1 + */ public interface Node { - /** * Returns true, if the contents stored in aNode are equal to this Node. */ diff --git a/src/distMaker/node/PathNode.java b/src/distMaker/node/PathNode.java index 5281404..69cfedb 100644 --- a/src/distMaker/node/PathNode.java +++ b/src/distMaker/node/PathNode.java @@ -1,19 +1,22 @@ package distMaker.node; -import glum.net.Credential; -import glum.task.Task; - import java.io.File; import java.net.URL; +import glum.net.Credential; +import glum.task.Task; + +/** + * Immutable {@link Node} describing a folder / directory. + * + * @author lopeznr1 + */ public class PathNode implements Node { // private final URL rootUrl; private final String fileName; - /** - * Immutable node describing a File. - */ + /** Standard Constructor */ public PathNode(URL aRootUrl, String aFileName) { // rootUrl = aRootUrl; diff --git a/src/distMaker/platform/AppleUtils.java b/src/distMaker/platform/AppleUtils.java index 0a80f7a..24e7b29 100644 --- a/src/distMaker/platform/AppleUtils.java +++ b/src/distMaker/platform/AppleUtils.java @@ -26,9 +26,9 @@ public class AppleUtils { /** * Returns the plist file used to configure apple applications. - *

    + *

    * Two locations will be searched.... TODO: Add more details of those locations. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static File getPlistFile() @@ -57,10 +57,10 @@ public class AppleUtils /** * Utility method to update the specified version in the plist file (pFile) to the new version. - *

    + *

    * Note this method is very brittle, and assumes that the version will occur in the sibling node which immediately * follows the node with a value of CFBundleVersion. TODO: Consider reducing brittleness. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateAppVersion(String aNewVersin, File pFile) @@ -118,7 +118,7 @@ public class AppleUtils /** * Utility method to update the configuration file (pFile) to reflect the specified AppLauncherRelease. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateAppLauncher(AppLauncherRelease aRelease, File pFile) @@ -193,7 +193,7 @@ public class AppleUtils /** * Utility method to update the configuration file (pFile) to reflect the specified JRE version. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateJreVersion(JreVersion aJreVersion, File pFile) @@ -258,10 +258,10 @@ public class AppleUtils /** * Utility method to update the specified max memory (-Xmx) value in the plist file (pFile) to the specified * maxMemVal. - *

    + *

    * In order for this method to succeed there must be a valid JVMOptions section followed by an array of string * elements of JVM arguments. The array element may be empty but must be specified. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateMaxMem(long numBytes, File pFile) @@ -384,15 +384,15 @@ public class AppleUtils /** * Utility helper method to clean up the specified XML document. - *

    + *

    * Clean up the XML to remove spurious empty line nodes. This is needed in Java 9 since the XML processing is * different from Java 8 and prior. Spurious newlines seem to be introduced with Java 9 XML libs. - *

    + *

    * Source: - *

      - *
    • http://java9.wtf/xml-transformer/ - *
    • https://stackoverflow.com/questions/12669686/how-to-remove-extra-empty-lines-from-xml-file - *
    + *
      + *
    • http://java9.wtf/xml-transformer/ + *
    • https://stackoverflow.com/questions/12669686/how-to-remove-extra-empty-lines-from-xml-file + *
    * * @param aDoc * @throws XPathExpressionException @@ -433,7 +433,7 @@ public class AppleUtils /** * Utility helper method to output aDoc to the specified file. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ private static void saveDoc(File aFile, Document aDoc) diff --git a/src/distMaker/platform/ArchitectureUtils.java b/src/distMaker/platform/ArchitectureUtils.java index c4d1c36..bf1a7ec 100644 --- a/src/distMaker/platform/ArchitectureUtils.java +++ b/src/distMaker/platform/ArchitectureUtils.java @@ -2,10 +2,10 @@ package distMaker.platform; /** * Collection of utility methods that provide a mechanism for the following: - *

      - *
    • Retrieval of the system {@link Architecture}. - *
    • Transformation of a architecture string into the corresponding {@link Architecture}. - *
    + *
      + *
    • Retrieval of the system {@link Architecture}. + *
    • Transformation of a architecture string into the corresponding {@link Architecture}. + *
    * Note that setting of system parameters will not take effect until the DistMaker application is restarted. * * @author lopeznr1 @@ -14,9 +14,9 @@ public class ArchitectureUtils { /** * Returns the architecture the current JRE is running on. - *

    + *

    * This always returns x64. - *

    + *

    * TODO: In the future update the code to return the architecture rather than assume x64! */ public static Architecture getArchitecture() @@ -26,7 +26,7 @@ public class ArchitectureUtils /** * Utility method that takes a string and will transform it to the corresponding {@link Architecture}. - *

    + *

    * Returns null if the architecture could not be determined. */ public static Architecture transformToArchitecture(String aInputStr) diff --git a/src/distMaker/platform/LinuxUtils.java b/src/distMaker/platform/LinuxUtils.java index 4993a72..b165a25 100644 --- a/src/distMaker/platform/LinuxUtils.java +++ b/src/distMaker/platform/LinuxUtils.java @@ -18,12 +18,12 @@ public class LinuxUtils { /** * Returns the executable script used to launch the JVM. - *

    + *

    * If there are multiple launch scripts then this method may grab the wrong file and fail. - *

    + *

    * TODO: In the future the launch script should pass itself as an argument to the JVM and DistMaker should keep track * of that. If the script is significantly manipulated from the original the launch file may be improperly detected. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static File getScriptFile() @@ -60,7 +60,7 @@ public class LinuxUtils /** * Utility method to update the configuration to reflect the specified JRE version. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateAppLauncher(AppLauncherRelease aRelease, File aScriptFile) @@ -119,7 +119,7 @@ public class LinuxUtils /** * Utility method to update the configuration to reflect the specified JRE version. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateJreVersion(JreVersion aJreVersion, File aScriptFile) @@ -170,13 +170,13 @@ public class LinuxUtils /** * Utility method to update the specified maxMem var in the script (aFile) to the requested number of bytes. - *

    + *

    * Note this method assumes the specified file is a shell script built by DistMaker where the var maxMem holds the * proper (right side) specification for the JVM's -Xmx value. - *

    + *

    * If the maxMem var definition is moved in the script file to after the launch of the application then this method * will (silently) fail to configure the value needed to launch the JVM. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateMaxMem(long aNumBytes, File aScriptFile) diff --git a/src/distMaker/platform/MemUtils.java b/src/distMaker/platform/MemUtils.java index d7fc6e5..e5ec9b9 100644 --- a/src/distMaker/platform/MemUtils.java +++ b/src/distMaker/platform/MemUtils.java @@ -1,12 +1,17 @@ package distMaker.platform; -import glum.reflect.ReflectUtil; -import glum.unit.ByteUnit; - import java.lang.management.ManagementFactory; import java.lang.management.OperatingSystemMXBean; import java.lang.reflect.Method; +import glum.reflect.ReflectUtil; +import glum.unit.ByteUnit; + +/** + * Collection of utility methods that provide various functionality associated with system memory. + * + * @author lopeznr1 + */ public class MemUtils { // Constants @@ -59,9 +64,9 @@ public class MemUtils /** * Utility method that takes an inputStr, locates the fragment -Xmx*, and replaces the fragment with the appropriate * -Xmx with respect to numBytes. - *

    + *

    * This method is a bit brittle in that it assumes the -Xmx string is surrounded with 1 white space character. - *

    + *

    * This method will return null if the string, -Xmx, is not located within the inputStr. */ public static String transformMaxMemHeapString(String inputStr, long numBytes) diff --git a/src/distMaker/platform/PlatformUtils.java b/src/distMaker/platform/PlatformUtils.java index 19bc8c3..45d65fd 100644 --- a/src/distMaker/platform/PlatformUtils.java +++ b/src/distMaker/platform/PlatformUtils.java @@ -5,19 +5,19 @@ import java.io.File; import distMaker.ErrorDM; import distMaker.jre.*; import distMaker.node.AppRelease; -import distMaker.utils.Version; +import glum.version.Version; /** * Collection of utility methods that provide platform independent mechanism for the following: - *

      - *
    • Retrieval of the DistMaker configuration file - *
    • Retrieval of the file name of the app launcher. - *
    • Retrieval of the location of the app launcher. - *
    • Retrieval / Setting of the JRE location. - *
    • Retrieval of the system {@link Platform}. - *
    • Setting of the heap memory. - *
    • Transformation of a platform string into the corresponding {@link Platform}. - *
    + *
      + *
    • Retrieval of the DistMaker configuration file + *
    • Retrieval of the file name of the app launcher. + *
    • Retrieval of the location of the app launcher. + *
    • Retrieval / Setting of the JRE location. + *
    • Retrieval of the system {@link Platform}. + *
    • Setting of the heap memory. + *
    • Transformation of a platform string into the corresponding {@link Platform}. + *
    * Note that setting of system parameters will not take effect until the DistMaker application is restarted. * * @author lopeznr1 @@ -26,11 +26,11 @@ public class PlatformUtils { /** * Returns the file name that should be used for a specific AppLauncher version. - *

    - * Namely legacy AppLauncher versions (versions equal to 0.0.x) will be expanded to:
    - * {@code appLauncher.jar}
    - * while non legacy versions will be expanded to something like:
    - * {@code appLauncher-.jar} + *

    + * Namely legacy AppLauncher versions (versions equal to 0.0.x) will be expanded to:
    + * {@code appLauncher.jar}
    + * while non legacy versions will be expanded to something like:
    + * {@code appLauncher-.jar} */ public static String getAppLauncherFileName(Version aVersion) { @@ -42,10 +42,10 @@ public class PlatformUtils /** * Utility method that returns the relative path where the specified AppLauncher is installed. - *

    + *

    * The returned path will be relative to the top of the application's DistMaker root rather than the applications * Java run path. - *

    + *

    * On failure this method will throw an exception of type {@link ErrorDM}. */ public static String getAppLauncherLocation(Version aVersion) @@ -69,7 +69,7 @@ public class PlatformUtils /** * Utility method that returns the platform specific configuration file for the java application. - *

    + *

    * On failure this method will throw an exception of type {@link ErrorDM}. */ public static File getConfigurationFile() @@ -90,10 +90,10 @@ public class PlatformUtils /** * Utility method that returns the relative path where the specified JRE should be unpacked to. - *

    + *

    * The returned path will be relative to the top of the application's DistMaker root rather than the applications * Java run path. - *

    + *

    * On failure this method will throw an exception of type {@link ErrorDM}. */ public static String getJreLocation(JreVersion aJreVersion) @@ -117,7 +117,7 @@ public class PlatformUtils /** * Returns the {@link Platform} on which the current JRE is running on. - *

    + *

    * If the platform is not recognized the a {@link ErrorDM} will be thrown. */ public static Platform getPlatform() @@ -135,9 +135,9 @@ public class PlatformUtils /** * Utility method to configure the AppLauncher used by the (active) DistMaker distribution. - *

    + *

    * Note this will only take effect after the application has been restarted. - *

    + *

    * On failure this method will throw an exception of type {@link ErrorDM}. * * @param aRelease @@ -165,9 +165,9 @@ public class PlatformUtils /** * Utility method to configure the JRE version used by the (active) DistMaker distribution. - *

    + *

    * Note this will only take effect after the application has been restarted. - *

    + *

    * On failure this method will throw an exception of type {@link ErrorDM}. * * @param aJrePath @@ -195,9 +195,9 @@ public class PlatformUtils /** * Utility method to configure the (active) DistMaker distribution to use the specified maxMem. - *

    + *

    * Note this will only take effect after the application has been restarted. - *

    + *

    * On failure this method will throw an exception of type {@link ErrorDM}. * * @param maxMemSize @@ -225,7 +225,7 @@ public class PlatformUtils /** * Utility method that takes a string and will transform it to the corresponding {@link Platform}. - *

    + *

    * Returns null if the platform could not be determined. */ public static Platform transformToPlatform(String aInputStr) @@ -249,9 +249,9 @@ public class PlatformUtils /** * Utility method to update the (active) DistMaker distribution to reflect the specified AppRelease. - *

    + *

    * Note this will only take effect after the application has been restarted. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateAppRelease(AppRelease aRelease) diff --git a/src/distMaker/platform/WindowsUtils.java b/src/distMaker/platform/WindowsUtils.java index 9da9fdf..0b66d1e 100644 --- a/src/distMaker/platform/WindowsUtils.java +++ b/src/distMaker/platform/WindowsUtils.java @@ -17,13 +17,13 @@ public class WindowsUtils { /** * Returns the l4j runtime configuration file. If one can not be determined then this method will return null. - *

    + *

    * If the configuration file is determined but does not exist, then an empty configuration file will be created. - *

    + *

    * Note this method looks for a file that ends in .l4j.cfg, or an exe file and creates the corresponding config file. - *

    + *

    * If there are multiple .exe or .l4j.cfg files, then this method may grab the wrong file and fail. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static File getConfigFile() @@ -73,7 +73,7 @@ public class WindowsUtils /** * Utility method to update the configuration to reflect the specified AppLauncher version. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateAppLauncher(AppLauncherRelease aRelease, File aConfigFile) @@ -84,7 +84,7 @@ public class WindowsUtils /** * Utility method to update the configuration to reflect the specified JRE version. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateJreVersion(JreVersion aJreVersion, File aConfigFile) @@ -96,10 +96,10 @@ public class WindowsUtils /** * Utility method to update the specified max memory (-Xmx) value in the text file (aFile) to the specified * maxMemVal. - *

    + *

    * Note this method is very brittle, and assumes that there is a single value where the string, -Xmx, is specified in * the script. It assumes this string will be surrounded by a single space character on each side. - *

    + *

    * On failure this method will throw an exception of type ErrorDM. */ public static void updateMaxMem(long numBytes, File aConfigFile) diff --git a/src/distMaker/utils/ParseUtils.java b/src/distMaker/utils/ParseUtils.java index e805322..2bdeb9d 100644 --- a/src/distMaker/utils/ParseUtils.java +++ b/src/distMaker/utils/ParseUtils.java @@ -1,15 +1,17 @@ package distMaker.utils; import distMaker.DistUtils; +import glum.version.PlainVersion; +import glum.version.Version; public class ParseUtils { /** * Utility method that processes the 'exit' instruction. - *

    + *

    * Returns true if the processing of the configuration file should exit. - *

    + *

    * Processing of the configuration file should exit if the specified needed version is not met or the version string * could not be parsed into major minor components. * diff --git a/src/distMaker/utils/PlainVersion.java b/src/distMaker/utils/PlainVersion.java deleted file mode 100644 index 748e1a9..0000000 --- a/src/distMaker/utils/PlainVersion.java +++ /dev/null @@ -1,74 +0,0 @@ -package distMaker.utils; - -/** - * Provides the standard implementation of the Version interface. - * - * @author lopeznr1 - */ -public class PlainVersion implements Version -{ - // Constants - public static PlainVersion AbsMin = new PlainVersion(Integer.MIN_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE); - public static PlainVersion AbsMax = new PlainVersion(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE); - public static PlainVersion Zero = new PlainVersion(0, 0, 0); - - // Attributes - private final int major; - private final int minor; - private final int patch; - - public PlainVersion(int aMajor, int aMinor, int aPatch) - { - major = aMajor; - minor = aMinor; - patch = aPatch; - } - - /** - * Forms a PlainVersion from the specified string. The version should have have at most 3 integer components - * separated by the char: '.'. Any extra components after the first 3 will be ignored. A NumberFormatException will - * be thrown if the type of any of the first 3 are not integers. - */ - public static PlainVersion parse(String aStr) - { - String[] tokenArr = aStr.split("\\."); - - int major = 0, minor = 0, patch = 0; - major = Integer.parseInt(tokenArr[0]); - if (tokenArr.length >= 2) - minor = Integer.parseInt(tokenArr[1]); - if (tokenArr.length >= 3) - patch = Integer.parseInt(tokenArr[2]); - - return new PlainVersion(major, minor, patch); - } - - @Override - public int getMajorVersion() - { - return major; - } - - @Override - public int getMinorVersion() - { - return minor; - } - - @Override - public int getPatchVersion() - { - return patch; - } - - @Override - public String toString() - { - String retStr = "" + major + "." + minor; - if (patch != 0) - retStr += "." + patch; - - return retStr; - } - -} diff --git a/src/distMaker/utils/Version.java b/src/distMaker/utils/Version.java deleted file mode 100644 index 1bb12cc..0000000 --- a/src/distMaker/utils/Version.java +++ /dev/null @@ -1,31 +0,0 @@ -package distMaker.utils; - -/** - * Interface which provides access to version components (major, minor, patch). - *

    - * Each component is modeled as an integer and it is assumed that higher values correspond to more developed software. - *

    - * Reference: https://semver.org/ - *

    - * Implementors of this interface should be immutable. - * - * @author lopeznr1 - */ -public interface Version -{ - /** - * Returns the major version component. - */ - public int getMajorVersion(); - - /** - * Returns the minor version component. - */ - public int getMinorVersion(); - - /** - * Returns the patch version component. - */ - public int getPatchVersion(); - -} diff --git a/src/distMaker/utils/VersionUtils.java b/src/distMaker/utils/VersionUtils.java deleted file mode 100644 index 5cac5ab..0000000 --- a/src/distMaker/utils/VersionUtils.java +++ /dev/null @@ -1,96 +0,0 @@ -package distMaker.utils; - -/** - * Utility class that allows for comparing Versions. - *

    - * Eventually when Java allows operator overloading then this class can go away since the standard mathematical - * comparison symbols would be much clearer. - * - * @author lopeznr1 - */ -public class VersionUtils -{ - /** - * Utility method that returns true if aVerA occurs after aVerB - */ - public static boolean isAfter(Version aVerA, Version aVerB) - { - int majorA = aVerA.getMajorVersion(); - int minorA = aVerA.getMinorVersion(); - int patchA = aVerA.getPatchVersion(); - int majorB = aVerB.getMajorVersion(); - int minorB = aVerB.getMinorVersion(); - int patchB = aVerB.getPatchVersion(); - - if (majorA > majorB) - return true; - if (majorA == majorB && minorA > minorB) - return true; - if (majorA == majorB && minorA == minorB && patchA > patchB) - return true; - - return false; - } - - /** - * Utility method that returns true if aVerA occurs after aVerB - */ - public static boolean isAfterOrEquar(Version aVerA, Version aVerB) - { - // Delegate to isAfter - return isAfter(aVerB, aVerA) == false; - } - - /** - * Utility method that returns true if the following statement is true: - *

    - * aVerEval >= aVerMin && aVerEval <= aVerMax - *

    - * A LogicError will be thrown if the aVerMin and aVerMax are inverted (aVerMin > aVerMax) - */ - public static boolean isInRange(Version aVerEval, Version aVerMin, Version aVerMax) - { - // Ensure the endpoints are not inverted - if (isAfter(aVerMin, aVerMax) == true) - throw new RuntimeException("Min/Max versions appear to be swapped. min: " + aVerMin + " max: " + aVerMax); - - // Decompose and delegate - if (isAfter(aVerMin, aVerEval) == true) - return false; - if (isAfter(aVerEval, aVerMax) == true) - return false; - - return true; - } - - /** - * Utility method to allow the comparison of two versions. - * - * @param aVerA - * @param aVerB - * @return - */ - public static int compare(Version aVerA, Version aVerB) - { - - int majorA = aVerA.getMajorVersion(); - int minorA = aVerA.getMinorVersion(); - int patchA = aVerA.getPatchVersion(); - int majorB = aVerB.getMajorVersion(); - int minorB = aVerB.getMinorVersion(); - int patchB = aVerB.getPatchVersion(); - - int cmpVal; - cmpVal = majorA - majorB; - if (cmpVal != 0) - return cmpVal; - cmpVal = minorA - minorB; - if (cmpVal != 0) - return cmpVal; - cmpVal = patchA - patchB; - if (cmpVal != 0) - return cmpVal; - - return 0; - } -} diff --git a/tools/buildRelease b/tools/buildRelease index 5cd4e95..679d339 100755 --- a/tools/buildRelease +++ b/tools/buildRelease @@ -8,6 +8,11 @@ import signal import subprocess import sys + +# Define the libraries the application depends on +libList = ['glum-1.3.7.jar', 'guava-18.0.jar', 'distMaker.jar'] + + def buildRelease(aVersion, aDoNotClean=False): """Method that builds a release of DistMaker. Upon sucessful execution, a tar.gz archive will be generated named: 'DistMaker-.tar.gz'. Note @@ -35,10 +40,24 @@ def buildRelease(aVersion, aDoNotClean=False): print('Building DistMaker release ' + aVersion + '...') os.mkdir(workPath) + # Copy the regular docs + dstPath = os.path.join(workPath, 'doc') + os.mkdir(dstPath) + for aFile in ['QuickStartGuide.pdf', 'ReadMe.txt']: + srcPath = os.path.join(installPath, 'doc', aFile) + shutil.copy2(srcPath, dstPath) + + # Copy the legal documents + dstPath = os.path.join(workPath, 'doc/legal') + os.mkdir(dstPath) + for aFile in glob.glob('doc/legal/*txt'): + srcPath = os.path.join(installPath, aFile) + shutil.copy2(srcPath, dstPath) + # Copy the libraries dstPath = os.path.join(workPath, 'lib') os.mkdir(dstPath) - for aLib in ['glum-1.3.jar', 'guava-18.0.jar', 'distMaker.jar']: + for aLib in libList: srcPath = os.path.join(installPath, 'lib', aLib) shutil.copy2(srcPath, dstPath) @@ -96,7 +115,9 @@ def getDistMakerVersion(): exit(-1) try: - exeCmd = ['java', '-cp', 'lib/distMaker.jar', 'distMaker.DistApp', '--version'] + cpStr = ':lib/'.join(libList) + cpStr = 'lib/' + cpStr + exeCmd = ['java', '-cp', cpStr, 'distMaker.DistApp', '--version'] output = subprocess.check_output(exeCmd).decode('utf-8') version = output.split()[1] return version