Commits

P_W999 committed 74af933

- code cleanup + format

  • Participants
  • Parent commits ecf73c3

Comments (0)

Files changed (59)

File .settings/org.eclipse.jdt.core.prefs

-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.7
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.7
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation=0
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_method_declaration=0
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_resources_in_try=80
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=true
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=true
+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=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=true
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=9999
+org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries=true
+org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries=true
+org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments=false
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.disabling_tag=@formatter\:off
+org.eclipse.jdt.core.formatter.enabling_tag=@formatter\:on
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=true
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_label=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=false
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=9999
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=false
+org.eclipse.jdt.core.formatter.tabulation.char=mixed
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_on_off_tags=false
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
+org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch=true
+org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested=true

File src/be/pw/jexif/DemoApp.java

  * 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
+ * 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,
 
 /**
  * The main class file.
+ * 
  * @author phillip
  */
 class DemoApp {
 
 	/**
 	 * Just a simple test main method that is used during development.
+	 * 
 	 * @param args arguments
 	 * @throws IOException
 	 * @throws ExifError
 		JExifInfo shiftWrite = tool.getInfo(shift);
 		LOG.info("Original timestamp: " + shiftWrite.getTagValue(ExifIFD.CREATEDATE));
 		LOG.info("Shifted timestamp: " + shiftWrite.timeShift(DateTag.CREATEDATE, TimeShiftGenerator.generateTimeShift(true, 1, 0, 0)));
-		
+
 		JExifInfo copyFromWrite = tool.getInfo(copyFrom);
-        LOG.info("Original EXPOSURETIME: " + shiftWrite.getTagValue(ExifIFD.EXPOSURETIME));
-        LOG.info("To be EXPOSURETIME: " + info1.getTagValue(ExifIFD.EXPOSURETIME));
-        copyFromWrite.copyFrom(info1);
-        LOG.info("New EXPOSURETIME: " + copyFromWrite.getTagValue(ExifIFD.EXPOSURETIME));
-		
+		LOG.info("Original EXPOSURETIME: " + shiftWrite.getTagValue(ExifIFD.EXPOSURETIME));
+		LOG.info("To be EXPOSURETIME: " + info1.getTagValue(ExifIFD.EXPOSURETIME));
+		copyFromWrite.copyFrom(info1);
+		LOG.info("New EXPOSURETIME: " + copyFromWrite.getTagValue(ExifIFD.EXPOSURETIME));
+
 		LOG.info("Executing took {} ms", watch.elapsedTime(TimeUnit.MILLISECONDS));
 		LOG.info("Finished main method");
 	}

File src/be/pw/jexif/JExifInfo.java

  * 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
+ * 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,
 /**
  * The JExifInfo class can be used to read or write a Tag from and to a given file.<br />
  * Reading tags involves lazy-loading, this means that tag information will only be read when asked for.
+ * 
  * @author phillip
  */
 @Beta
 
 	/**
 	 * Packaged constructor as this object must always be instantiated from an JExifTool instance.
+	 * 
 	 * @param tool the reference to the JExifTool which instantiated this object.
 	 * @param file the image file specified by the user.
 	 */
 	/**
 	 * Reads out a tag.<br />
 	 * Reading involves lazy-loading so there might be a little delay when calling this method.
+	 * 
 	 * @param tag the tag to read.
 	 * @return the tag value as a String or null if no value found.
 	 * @throws JExifException in case something goes wrong internally.
 	/**
 	 * Reads out a tag returning it's exact value (so instead of 1/400s it'll return 0.025).<br />
 	 * Reading involves lazy-loading so there might be a little delay when calling this method.
+	 * 
 	 * @param tag the tag to read.
 	 * @return the tag value as a String or null if no value found.
 	 * @throws JExifException in case something goes wrong internally.
 	 * <li>{@link Tag#isProtectedField()}</li>
 	 * <li>{@link Tag#isUnsafe()}</li>
 	 * </ul>
+	 * 
 	 * @param tag the tag to write to.
 	 * @param value the value to write.
 	 * @return the exact value that was read from the image after writing it.
 
 	/**
 	 * Writes GPS info.
+	 * 
 	 * @param GPSLatitude gps latitude
 	 * @param GPSLatitudeRef N or S (Northern or Southern hemisphere)
 	 * @param GPSLongitude gps longitude
 	 * Reads out all the tag values in human read-able format, even the ones not known in J-ExifTool.<br />
 	 * The default set supported by J-ExifTool can be found in the be.pw.jexif.enums.tag package.<br />
 	 * The set of known tags can be extended by using {@link TagUtil#register(Class)}.
+	 * 
 	 * @return a map with all the tag values.
 	 * @throws JExifException in case something goes wrong internally.
 	 * @throws ExifError if something went wrong in ExifTool
 	 * Reads out all the tag values in exact format, even the ones not known in J-ExifTool.<br />
 	 * The default set supported by J-ExifTool can be found in the be.pw.jexif.enums.tag package.<br />
 	 * The set of known tags can be extended by using {@link TagUtil#register(Class)}.
+	 * 
 	 * @return a map with all the tag values.
 	 * @throws JExifException in case something goes wrong internally.
 	 * @throws ExifError if something went wrong in ExifTool
 	 * Reads out all the tag values in human read-able format, limited to only the tags known to J-ExifTool.<br />
 	 * The default set supported by J-ExifTool can be found in the be.pw.jexif.enums.tag package.<br />
 	 * The set of known tags can be extended by using {@link TagUtil#register(Class)}.
+	 * 
 	 * @return a map with all the tag values.
 	 * @throws JExifException in case something goes wrong internally.
 	 * @throws ExifError if something went wrong in ExifTool
 	 * Reads out all the tag values in exact format, limited to only the tags known to J-ExifTool. <br />
 	 * The default set supported by J-ExifTool can be found in the be.pw.jexif.enums.tag package.<br />
 	 * The set of known tags can be extended by using {@link TagUtil#register(Class)}.
+	 * 
 	 * @return a map with all the tag values.
 	 * @throws JExifException in case something goes wrong internally.
 	 * @throws ExifError if something went wrong in ExifTool
 	public Map<Tag, String> getAllSupportedExactTagsValues() throws ExifError, JExifException {
 		return exifTool.getAllSupportedTagInfo(file, true);
 	}
-	
+
 	/**
 	 * Performs a time shift on a tag containing a date, time or date-time value.
 	 * <p>
-	 * Any date, time or datetime value can be shifted in any direction. The amount of shift is determined using the shiftPattern param.
-	 * The shiftPattern must be any of those described on {@link http://www.sno.phy.queensu.ca/~phil/exiftool/Shift.html}.
+	 * Any date, time or datetime value can be shifted in any direction. The amount of shift is determined using the shiftPattern param. The shiftPattern must be any of those described on {@link http://www.sno.phy.queensu.ca/~phil/exiftool/Shift.html}.
 	 * <p>
-	 * A utility class which creates some straightforward patterns can be used to: {@link TimeShiftGenerator} 
+	 * A utility class which creates some straightforward patterns can be used to: {@link TimeShiftGenerator}
 	 * <p>
 	 * Optionally you can shift all datetime tags by passing the {@link DateTag#ALLDATES} shortcut
+	 * 
 	 * @param dateTag the tag to modify
 	 * @param shiftPattern the pattern (see doc)
 	 * @return the new, timeshifted value
 	 * @throws JExifException in case something goes wrong internally.
-     * @throws ExifError if something went wrong in ExifTool
-     * @since v0.0.6
+	 * @throws ExifError if something went wrong in ExifTool
+	 * @since v0.0.6
 	 */
 	@Beta
 	public String timeShift(final DateTag dateTag, final String shiftPattern) throws JExifException, ExifError {
-	    exifTool.timeShift(file, shiftPattern, dateTag);
-	    return getTagValue(dateTag.getTag());
+		exifTool.timeShift(file, shiftPattern, dateTag);
+		return getTagValue(dateTag.getTag());
 	}
-	
+
 	/**
 	 * Copies tags from one file to another.
+	 * 
 	 * @param from the source file. The tags specified by the tags parameter will be read from this file
 	 * @param tags the tag to read. If left empty, <b>all</b> tags will be copied !
 	 * @throws JExifException in case something goes wrong internally.
-     * @throws ExifError if something went wrong in ExifTool
-     * @since v0.0.6
-     */
+	 * @throws ExifError if something went wrong in ExifTool
+	 * @since v0.0.6
+	 */
 	@Beta
-    public void copyFrom(final JExifInfo from, Tag ... tags) throws JExifException, ExifError {
-        exifTool.copyFrom(file, from.getFile(), tags);
-    }
+	public void copyFrom(final JExifInfo from, final Tag... tags) throws JExifException, ExifError {
+		exifTool.copyFrom(file, from.getFile(), tags);
+	}
 
 	/**
 	 * Returns a reference to the file.
+	 * 
 	 * @return the file.
 	 */
 	File getFile() {
-	    return file;
+		return file;
 	}
 }

File src/be/pw/jexif/JExifTool.java

  * 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
+ * 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,
  * <p>
  * The following System Properties are used by J-ExifTool and may or must be set for proper operation:
  * <ul>
- *  <li>{@link ExecutionConstant#EXIFTOOLPATH}: the path to the ExifTool executable</li>
- *  <li>{@link ExecutionConstant#EXIFTOOLDEADLOCK}: timeout</li>
- *  <li>{@link ExecutionConstant#EXIFTOOLBYPASSVALIDATION}: whether to bypass validations when writing tags (set to true to bypass, use at own risk)</li>
+ * <li>{@link ExecutionConstant#EXIFTOOLPATH}: the path to the ExifTool executable</li>
+ * <li>{@link ExecutionConstant#EXIFTOOLDEADLOCK}: timeout</li>
+ * <li>{@link ExecutionConstant#EXIFTOOLBYPASSVALIDATION}: whether to bypass validations when writing tags (set to true to bypass, use at own risk)</li>
  * </ul>
+ * 
  * @author phillip
  */
 @Beta
 	/**
 	 * The path to the ExifTool executable. If the system property was not defined, the application will back to the current directory and expects the executable to be called "exiftool.exe".
 	 * <p>
+	 * 
 	 * @see be.pw.jexif.internal.constants.ExecutionConstant#EXIFTOOLPATH
 	 */
 	private final File exifToolPath = new File(System.getProperty(ExecutionConstant.EXIFTOOLPATH, ".\\exiftool.exe"));
 	 * Timeout in milliseconds before the application decides that the for-looping which is waiting for the ExifTool output has deadlocked.
 	 * <p>
 	 * This might happen if all of a sudden ExifTool crashes or is not up and running.
+	 * 
 	 * @see be.pw.jexif.internal.constants.ExecutionConstant#EXIFTOOLDEADLOCK
 	 */
 	private final int deadLock = Integer.getInteger(ExecutionConstant.EXIFTOOLDEADLOCK, 4000);
 	/**
 	 * Default constructor. <br />
 	 * This automatically starts the ExifTool process and registers the standard Tag-set that comes with this library.
+	 * 
 	 * @throws JExifException if failed to start ExifTool
 	 */
 	@Beta
 
 	/**
 	 * Creates a new instance of a JExifInfo object. This object can be used to read and write Exif tags to the specified file.
+	 * 
 	 * @param file the image file from which tags shall be read from or written to.
 	 * @return a JExifInfo object.
 	 * @throws IOException if the file does not exist or if it's folder
 
 	/**
 	 * Starts the ExifTool process using Apache Commons Exec This method is automatically called when a new instance of JExifTool is created.
+	 * 
 	 * @throws JExifException if failed to start thread.
 	 */
 	private void start() throws JExifException {
 		LOG.trace("Using exifToolPath in: " + exifToolPath.getAbsolutePath());
 		LOG.trace("Argsfile is stored in: " + argsFile.getAbsolutePath());
 		if (!exifToolPath.exists()) {
-		    LOG.error("The provided path to ExifTool is not valid: " + exifToolPath.getAbsolutePath());
-		    LOG.error("To configure the path to your exiftool installation, please set the following system property: " + ExecutionConstant.EXIFTOOLPATH);
-		    throw new JExifException(Cal10nUtil.get(Errors.EXIFTOOL_INVALID_PATH));
+			LOG.error("The provided path to ExifTool is not valid: " + exifToolPath.getAbsolutePath());
+			LOG.error("To configure the path to your exiftool installation, please set the following system property: " + ExecutionConstant.EXIFTOOLPATH);
+			throw new JExifException(Cal10nUtil.get(Errors.EXIFTOOL_INVALID_PATH));
 		}
 		try {
 			argsWriter = new FileWriter(argsFile);
 
 	/**
 	 * Starts the ExifTool process if needed
+	 * 
 	 * @throws JExifException if failed to start ExifTool.
 	 */
 	private void startIfNecessary() throws JExifException {
 
 	/**
 	 * Stops the ExifTool-thread. You <b>ALWAYS</b> have to call this method when you don't need J-ExifTool anymore, otherwise the ExifTool process will continue running in the background.
+	 * 
 	 * @throws JExifException if it failed to stop (there is a Thread.sleep which may throw an InterruptedException).
 	 */
 	@Beta
 
 	/**
 	 * This method will read out the specified tag from the given file. Default to using the non-exact format.
+	 * 
 	 * @param file the file from which to read.
 	 * @param tag the tag to read out.
 	 * @return the tag value as String or null if nothing found.
 
 	/**
 	 * This method will read out the specified tag from the given file. Default to using the non-exact format.
+	 * 
 	 * @param file the file from which to read.
 	 * @param tag the tag to read out.
 	 * @return the tag value as String or null if nothing found.
 
 	/**
 	 * This method will write a value to a given Tag.
+	 * 
 	 * @param file the file to which the value should be written.
 	 * @param tag the tag that should be written.
 	 * @param value the value to write (if null or empty string, the Tag will be cleared)
 
 	/**
 	 * This method will write a value to a given Tag.
+	 * 
 	 * @param file the file to which the value should be written.
 	 * @param valuesToWrite the value to write
 	 * @throws JExifException when writing the argsfile went wrong or when the Tread.sleep caused problems (or the execution took to long).
 
 	/**
 	 * Returns all the tags, even the ones not known in J-ExifTool.
+	 * 
 	 * @param file the file from which to read.
 	 * @param exact whether the exact value should be returned or not.
 	 * @return the map with tag-name - tag-value.
 
 	/**
 	 * Returns all the tags known to J-ExifTool
+	 * 
 	 * @param file the file from which to read.
 	 * @param exact whether the exact value should be returned or not.
 	 * @return the map with tag-name - tag-value.
 	Map<Tag, String> getAllSupportedTagInfo(final File file, final boolean exact) throws ExifError, JExifException {
 		return (Map<Tag, String>) getAllTagInfo(file, exact, true);
 	}
-	
+
 	void timeShift(final File file, final String shift, final DateTag tag) throws JExifException, ExifError {
-	    startIfNecessary();
-        LOG.trace("Starting timeShift");
-        int i = 0;
-        IAction action;
-        EventHandler handler;
-        try {
-            action = ActionFactory.createDateTimeShiftAction(file, shift, tag);
-            handler = new EventHandler();
-            bus.register(handler);
-
-            String[] arguments = action.buildArguments();
-            for (String argument : arguments) {
-                argsWriter.append(argument).append("\r\n");
-            }
-            argsWriter.flush();
-            while (!handler.isFinished() && i <= deadLock) {
-                Thread.sleep(50);
-                i += 50;
-            }
-            if (!handler.isFinished()) {
-                LOG.error(Cal10nUtil.get(Errors.DEADLOCK, i));
-                throw new JExifException(Cal10nUtil.get(Errors.DEADLOCK, i));
-            }
-            bus.unregister(handler);
-        } catch (IOException e) {
-            throw new JExifException(Cal10nUtil.get(Errors.IO_ARGSFILE), e);
-        } catch (InterruptedException e) {
-            throw new JExifException(Cal10nUtil.get(Errors.INTERRUPTED_SLEEP), e);
-        }
-        List<String> results = handler.getResultList();
-        List<String> errors = handler.getErrorList();
-        ResultHandler.run(action, results, errors);
+		startIfNecessary();
+		LOG.trace("Starting timeShift");
+		int i = 0;
+		IAction action;
+		EventHandler handler;
+		try {
+			action = ActionFactory.createDateTimeShiftAction(file, shift, tag);
+			handler = new EventHandler();
+			bus.register(handler);
+
+			String[] arguments = action.buildArguments();
+			for (String argument : arguments) {
+				argsWriter.append(argument).append("\r\n");
+			}
+			argsWriter.flush();
+			while (!handler.isFinished() && i <= deadLock) {
+				Thread.sleep(50);
+				i += 50;
+			}
+			if (!handler.isFinished()) {
+				LOG.error(Cal10nUtil.get(Errors.DEADLOCK, i));
+				throw new JExifException(Cal10nUtil.get(Errors.DEADLOCK, i));
+			}
+			bus.unregister(handler);
+		} catch (IOException e) {
+			throw new JExifException(Cal10nUtil.get(Errors.IO_ARGSFILE), e);
+		} catch (InterruptedException e) {
+			throw new JExifException(Cal10nUtil.get(Errors.INTERRUPTED_SLEEP), e);
+		}
+		List<String> results = handler.getResultList();
+		List<String> errors = handler.getErrorList();
+		ResultHandler.run(action, results, errors);
+	}
+
+	void copyFrom(final File to, final File from, final Tag... tags) throws JExifException, ExifError {
+		startIfNecessary();
+		LOG.trace("Starting copyFrom");
+		int i = 0;
+		IAction action;
+		EventHandler handler;
+		try {
+			action = ActionFactory.createCopyFromAction(from, to, tags);
+			handler = new EventHandler();
+			bus.register(handler);
+
+			String[] arguments = action.buildArguments();
+			for (String argument : arguments) {
+				argsWriter.append(argument).append("\r\n");
+			}
+			argsWriter.flush();
+			while (!handler.isFinished() && i <= deadLock) {
+				Thread.sleep(50);
+				i += 50;
+			}
+			if (!handler.isFinished()) {
+				LOG.error(Cal10nUtil.get(Errors.DEADLOCK, i));
+				throw new JExifException(Cal10nUtil.get(Errors.DEADLOCK, i));
+			}
+			bus.unregister(handler);
+		} catch (IOException e) {
+			throw new JExifException(Cal10nUtil.get(Errors.IO_ARGSFILE), e);
+		} catch (InterruptedException e) {
+			throw new JExifException(Cal10nUtil.get(Errors.INTERRUPTED_SLEEP), e);
+		}
+		List<String> results = handler.getResultList();
+		List<String> errors = handler.getErrorList();
+		ResultHandler.run(action, results, errors);
 	}
-	
-	void copyFrom(final File to, final File from, final Tag ... tags) throws JExifException, ExifError {
-        startIfNecessary();
-        LOG.trace("Starting copyFrom");
-        int i = 0;
-        IAction action;
-        EventHandler handler;
-        try {
-            action = ActionFactory.createCopyFromAction(from, to, tags);
-            handler = new EventHandler();
-            bus.register(handler);
-
-            String[] arguments = action.buildArguments();
-            for (String argument : arguments) {
-                argsWriter.append(argument).append("\r\n");
-            }
-            argsWriter.flush();
-            while (!handler.isFinished() && i <= deadLock) {
-                Thread.sleep(50);
-                i += 50;
-            }
-            if (!handler.isFinished()) {
-                LOG.error(Cal10nUtil.get(Errors.DEADLOCK, i));
-                throw new JExifException(Cal10nUtil.get(Errors.DEADLOCK, i));
-            }
-            bus.unregister(handler);
-        } catch (IOException e) {
-            throw new JExifException(Cal10nUtil.get(Errors.IO_ARGSFILE), e);
-        } catch (InterruptedException e) {
-            throw new JExifException(Cal10nUtil.get(Errors.INTERRUPTED_SLEEP), e);
-        }
-        List<String> results = handler.getResultList();
-        List<String> errors = handler.getErrorList();
-        ResultHandler.run(action, results, errors);
-    }
 
 	private Map<? extends Object, String> getAllTagInfo(final File file, final boolean exact, final boolean onlySupported) throws ExifError, JExifException {
 		startIfNecessary();

File src/be/pw/jexif/enums/DataType.java

  * 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
+ * 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,
  * <li>Float</li>
  * <li>Undefined for any other case</li>
  * </ul>
+ * 
  * @author phillip
  */
 public enum DataType {

File src/be/pw/jexif/enums/DateTag.java

  * 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
+ * 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,
  * <p>
  * The ALLDATES tag is an ExifTool shortcut for:
  * <ul>
- *  <li>DateTimeOriginal
- *  <li>CreateDate
- *  <li>ModifyDate
+ * <li>DateTimeOriginal
+ * <li>CreateDate
+ * <li>ModifyDate
  * </ul>
  * See also {@link JExifInfo#timeShift(DateTag, String)}
+ * 
  * @author phillip
  * @since v0.0.6
  */
 public enum DateTag {
 
-    DATETIMEORIGINAL(ExifIFD.DATETIMEORIGINAL), CREATEDATE(ExifIFD.CREATEDATE), MODIFYDATE(IFD0.MODIFYDATE), ALLDATES(null);
-    
-    private Tag tag;
-    
-    private DateTag(Tag tag) {
-        this.tag = tag;
-    }
-    
-    public Tag getTag() {
-        return this.tag;
-    }
+	DATETIMEORIGINAL(ExifIFD.DATETIMEORIGINAL), CREATEDATE(ExifIFD.CREATEDATE), MODIFYDATE(IFD0.MODIFYDATE), ALLDATES(null);
+
+	private Tag tag;
+
+	private DateTag(final Tag tag) {
+		this.tag = tag;
+	}
+
+	public Tag getTag() {
+		return this.tag;
+	}
 }

File src/be/pw/jexif/enums/Errors.java

  * 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
+ * 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,
 
 /**
  * Enum which is used in combination with cal10n to i18n the errormessages.
+ * 
  * @see be.pw.jexif.internal.util.Cal10nUtil
  */
 @BaseName("errorMessages")

File src/be/pw/jexif/enums/tag/ExifGPS.java

  * 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
+ * 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,
 
 /**
  * Implementation of the GPS group: <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/GPS.html">http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/GPS.html</a>
+ * 
  * @author phillip
  */
 public enum ExifGPS implements Tag {

File src/be/pw/jexif/enums/tag/ExifIFD.java

  * 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
+ * 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,
 
 /**
  * Implementation of the ExifIFD group: <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html">http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html</a>
+ * 
  * @author phillip
  */
 public enum ExifIFD implements Tag {

File src/be/pw/jexif/enums/tag/IFD0.java

  * 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
+ * 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,
 
 /**
  * Implementation of the IFD0 group: <a href="http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html">http://www.sno.phy.queensu.ca/~phil/exiftool/TagNames/EXIF.html</a>
+ * 
  * @author phillip
  */
 public enum IFD0 implements Tag {

File src/be/pw/jexif/enums/tag/Tag.java

  * 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
+ * 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,
 
 	/**
 	 * An avoided tags is a tag that is not created when writing if another same-named tag may be created instead.
+	 * 
 	 * @return true if the tag is avoided.
 	 */
 	boolean isAvoided();
 
 	/**
 	 * Indicates a tag that is considered unsafe to write under normal circumstances.
+	 * 
 	 * @return true if the tag is unsafe.
 	 */
 	boolean isUnsafe();
 
 	/**
 	 * Indicates a protected tag which is not writable directly, but is written automatically by ExifTool (often when a corresponding Composite or Extra tag is written)
+	 * 
 	 * @return true if the tag is protected.
 	 */
 	boolean isProtectedField();

File src/be/pw/jexif/exception/ExifError.java

  * 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
+ * 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,
 
 /**
  * Indicates there was a problem in ExifTool (not JExifTool).
+ * 
  * @author phillip
  */
 public class ExifError extends Exception {

File src/be/pw/jexif/exception/JExifException.java

  * 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
+ * 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,
  * The standard exception. This can be used for anything.<br />
  * The goal is to launch only one exception, this makes exception handling far more easy.<br />
  * This may not be the best strategy, but if it fails, it fails.
+ * 
  * @author phillip
  */
 public class JExifException extends Exception {

File src/be/pw/jexif/exception/JExifValidationException.java

  * 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
+ * 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,

File src/be/pw/jexif/internal/action/AbstractAction.java

  * 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
+ * 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,
 
 /**
  * An abstract implementation of the IAction interface.
+ * 
  * @author phillip
  */
 public abstract class AbstractAction implements IAction {

File src/be/pw/jexif/internal/action/IAction.java

  * 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
+ * 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,
  * </ol>
  * The IAction interface describes such action.<br />
  * An action may only be instantiated by the {@link ActionFactory} and for each action an {@link IResultParser} should be created.
+ * 
  * @author phillip
  */
 public interface IAction {
 
 	/**
 	 * Returns the id of the action.
+	 * 
 	 * @return the id (but never returns null)
 	 */
 	String getId();
 
 	/**
 	 * Generates the array of arguments to pass to ExifTool.
+	 * 
 	 * @return an array of arguments
 	 * @throws JExifException in case of an exception (most likely IO)
 	 */
 
 	/**
 	 * Returns the result of the execution as a String.
+	 * 
 	 * @return the map with as key the Tag and as value the result of the execution
 	 */
 	Map<Tag, String> getResult();
 
 	/**
 	 * Adds the result for a Tag.
+	 * 
 	 * @param tag the tag for which the result is added
 	 * @param result the result of the action
 	 */
 
 	/**
 	 * Returns the list of tags that were read but are not supported by J-ExifTool.
+	 * 
 	 * @return the list of unsupported tags.
 	 */
 	public abstract Map<String, String> getUnsupportedTags();
 
 	/**
 	 * Adds the result for an unsupported tag.
+	 * 
 	 * @param tagName the name of the unsupported tag (as returned by ExifTool)
 	 * @param result the result
 	 */

File src/be/pw/jexif/internal/action/ICopyFromAction.java

 
 /**
  * The action to copy tags from one file to another
+ * 
  * @author phillip
  * @since v0.0.6
- *
+ * 
  */
 public interface ICopyFromAction extends IAction {
 

File src/be/pw/jexif/internal/action/IDateTimeShiftAction.java

 
 /**
  * Interface for timeshift functionality.
+ * 
  * @author phillip
  * @since v0.0.6
- *
+ * 
  */
 public interface IDateTimeShiftAction extends IAction {
 

File src/be/pw/jexif/internal/action/ITagReadAction.java

  * 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
+ * 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,

File src/be/pw/jexif/internal/action/ITagReadAllAction.java

  * 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
+ * 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,

File src/be/pw/jexif/internal/action/ITagReadExactAction.java

  * 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
+ * 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,

File src/be/pw/jexif/internal/action/ITagReadExactAllAction.java

  * 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
+ * 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,

File src/be/pw/jexif/internal/action/ITagWriteAction.java

  * 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
+ * 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,

File src/be/pw/jexif/internal/action/impl/ActionFactory.java

  * 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
+ * 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,
 
 /**
  * Factory for the different action.
+ * 
  * @see be.pw.jexif.internal.action.IAction
  */
 public class ActionFactory {
 	/**
 	 * Creates a new instance of a {@link TagReadAction}<br />
 	 * TagReadActions can be used to retrieve one or multiple Tags from a single image.
+	 * 
 	 * @param file the file from which the tags should be retrieved. May not be null.
 	 * @param tags the tags that should be read. May not be null.
 	 * @return an instance of a TagReadAction or null if validation failed.
 	/**
 	 * Creates a new instance of a {@link TagReadExactAction}<br />
 	 * TagReadExactAction can be used to retrieve the exact value of one or multiple Tags from a single image.
+	 * 
 	 * @param file the file from which the tags should be retrieved. May not be null.
 	 * @param tags the tags that should be read. May not be null.
 	 * @return an instance of a TagReadAction or null if validation failed.
 		readExactAll.setParams(file);
 		return readExactAll;
 	}
-	
-	public static IDateTimeShiftAction createDateTimeShiftAction(final File file, String shift, DateTag ... tags) throws IOException {
-	    DateTimeShiftAction dateTimeShift = new DateTimeShiftAction();
-	    dateTimeShift.setParams(file, shift, Sets.newHashSet(tags));
-	    return dateTimeShift;
+
+	public static IDateTimeShiftAction createDateTimeShiftAction(final File file, final String shift, final DateTag... tags) throws IOException {
+		DateTimeShiftAction dateTimeShift = new DateTimeShiftAction();
+		dateTimeShift.setParams(file, shift, Sets.newHashSet(tags));
+		return dateTimeShift;
 	}
-	
-	public static ICopyFromAction createCopyFromAction(final File from, final File to, Tag ... tags) throws IOException, JExifValidationException {
-	    CopyFromAction copyFromAction = new CopyFromAction();
-	    copyFromAction.setParams(from, to, Lists.newArrayList(tags));
-	    return copyFromAction;
+
+	public static ICopyFromAction createCopyFromAction(final File from, final File to, final Tag... tags) throws IOException, JExifValidationException {
+		CopyFromAction copyFromAction = new CopyFromAction();
+		copyFromAction.setParams(from, to, Lists.newArrayList(tags));
+		return copyFromAction;
 	}
 }

File src/be/pw/jexif/internal/action/impl/CopyFromAction.java

  * 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
+ * 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,
 import be.pw.jexif.internal.util.Cal10nUtil;
 
 import com.google.common.base.Preconditions;
+
 /**
  * Action to perform date/time-shifts.
+ * 
  * @author phillip
  * @since v0.0.6
- *
+ * 
  */
 class CopyFromAction extends AbstractAction implements ICopyFromAction {
-    /**
-     * Hidden constructor. All initializations should occur from the {@link ActionFactory}.
-     */
-    CopyFromAction() {
-        super();
-    }
+	/**
+	 * Hidden constructor. All initializations should occur from the {@link ActionFactory}.
+	 */
+	CopyFromAction() {
+		super();
+	}
+
+	/**
+	 * The logger for this class.
+	 */
+	private static final Logger LOG = LoggerFactory.getLogger(CopyFromAction.class);
+
+	/**
+	 * Contains all the tags that must be copied. Empty collections are allowed.
+	 */
+	private Collection<Tag> valuesToCopy;
+
+	/**
+	 * The file from which the tag values are read
+	 */
+	private File sourceFile;
+
+	/**
+	 * Sets the params.
+	 * 
+	 * @param from the file from which the tag values will be extracted
+	 * @param to the file to which the tag values will be writen
+	 * @param valuesToCopy list containing the tag values to copy
+	 * @throws JExifException if the give value is not of a valid type.
+	 * @throws IOException if the given file does not exist.
+	 * @throws IllegalArgumentException if provided fields are null, empty or if trying to write to a protected/avoided/unsafe tag.
+	 */
+	void setParams(final File from, final File to, final Collection<Tag> valuesToCopy) throws JExifValidationException, IOException {
+		Preconditions.checkNotNull(from);
+		if (!from.exists()) {
+			throw new FileNotFoundException(Cal10nUtil.get(Errors.IO_FILE_NOT_VALID, from.getAbsolutePath()));
+		}
+		Preconditions.checkNotNull(to);
+		if (!to.exists()) {
+			throw new FileNotFoundException(Cal10nUtil.get(Errors.IO_FILE_NOT_VALID, to.getAbsolutePath()));
+		}
+		if (valuesToCopy != null && !valuesToCopy.isEmpty()) {
+			for (Tag tag : valuesToCopy) {
+				Preconditions.checkArgument(!tag.isUnsafe(), Cal10nUtil.get(Errors.VALIDATION_WRITE_UNSAFE_TAG, tag.getName()));
+				Preconditions.checkArgument(!tag.isProtectedField(), Cal10nUtil.get(Errors.VALIDATION_WRITE_PROTECTED_TAG, tag.getName()));
+				Preconditions.checkArgument(!tag.isAvoided(), Cal10nUtil.get(Errors.VALIDATION_WRITE_AVOIDED_TAG, tag.getName()));
+			}
+		}
+		this.file = to;
+		this.sourceFile = from;
+		this.valuesToCopy = valuesToCopy;
+	}
 
-    /**
-     * The logger for this class.
-     */
-    private static final Logger LOG = LoggerFactory.getLogger(CopyFromAction.class);
-    
-    /**
-     * Contains all the tags that must be copied. Empty collections are allowed.
-     */
-    private Collection<Tag> valuesToCopy;
-    
-    /**
-     * The file from which the tag values are read
-     */
-    private File sourceFile;
-    
-    /**
-     * Sets the params.
-     * @param from the file from which the tag values will be extracted
-     * @param to the file to which the tag values will be writen
-     * @param valuesToCopy list containing the tag values to copy
-     * @throws JExifException if the give value is not of a valid type.
-     * @throws IOException if the given file does not exist.
-     * @throws IllegalArgumentException if provided fields are null, empty or if trying to write to a protected/avoided/unsafe tag.
-     */
-    void setParams(final File from, final File to, final Collection<Tag> valuesToCopy) throws JExifValidationException, IOException {
-        Preconditions.checkNotNull(from);
-        if (!from.exists()) {
-            throw new FileNotFoundException(Cal10nUtil.get(Errors.IO_FILE_NOT_VALID, from.getAbsolutePath()));
-        }
-        Preconditions.checkNotNull(to);
-        if (!to.exists()) {
-            throw new FileNotFoundException(Cal10nUtil.get(Errors.IO_FILE_NOT_VALID, to.getAbsolutePath()));
-        }
-        if (valuesToCopy != null && !valuesToCopy.isEmpty())
-        for (Tag tag: valuesToCopy) {
-            Preconditions.checkArgument(!tag.isUnsafe(), Cal10nUtil.get(Errors.VALIDATION_WRITE_UNSAFE_TAG, tag.getName()));
-            Preconditions.checkArgument(!tag.isProtectedField(), Cal10nUtil.get(Errors.VALIDATION_WRITE_PROTECTED_TAG, tag.getName()));
-            Preconditions.checkArgument(!tag.isAvoided(), Cal10nUtil.get(Errors.VALIDATION_WRITE_AVOIDED_TAG, tag.getName()));
-        }
-        this.file = to;
-        this.sourceFile = from;
-        this.valuesToCopy = valuesToCopy;
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String[] buildArguments() throws JExifException {
-        try {
-            int size = valuesToCopy.size() + 8;
-            String[] arguments = new String[size];
-            int i = 0;
-            arguments[i++] = ExecutionConstant.ECHO;
-            arguments[i++] = ExecutionConstant.START + " " + getId();
-            arguments[i++] = ExecutionConstant.TAGSFROMFILE;
-            arguments[i++] = sourceFile.getCanonicalPath();
-            for (Tag tag : valuesToCopy) {
-                arguments[i++] = "-" + tag.getName();
-            }
-            arguments[i++] = file.getCanonicalPath();
-            arguments[i++] = ExecutionConstant.ECHO;
-            arguments[i++] = ExecutionConstant.STOP + " " + getId();
-            arguments[i] = ExecutionConstant.EXECUTE;
-            LOG.trace("Arguments are : " + ArrayUtil.toString(arguments));
-            return arguments;
-        } catch (IOException e) {
-            throw new JExifException(Cal10nUtil.get(Errors.IO_BUILD_ARGUMENTS), e);
-        }
-    }
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public String[] buildArguments() throws JExifException {
+		try {
+			int size = valuesToCopy.size() + 8;
+			String[] arguments = new String[size];
+			int i = 0;
+			arguments[i++] = ExecutionConstant.ECHO;
+			arguments[i++] = ExecutionConstant.START + " " + getId();
+			arguments[i++] = ExecutionConstant.TAGSFROMFILE;
+			arguments[i++] = sourceFile.getCanonicalPath();
+			for (Tag tag : valuesToCopy) {
+				arguments[i++] = "-" + tag.getName();
+			}
+			arguments[i++] = file.getCanonicalPath();
+			arguments[i++] = ExecutionConstant.ECHO;
+			arguments[i++] = ExecutionConstant.STOP + " " + getId();
+			arguments[i] = ExecutionConstant.EXECUTE;
+			LOG.trace("Arguments are : " + ArrayUtil.toString(arguments));
+			return arguments;
+		} catch (IOException e) {
+			throw new JExifException(Cal10nUtil.get(Errors.IO_BUILD_ARGUMENTS), e);
+		}
+	}
 
 }

File src/be/pw/jexif/internal/action/impl/DateTimeShiftAction.java

  * 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
+ * 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,
 
 import com.google.common.base.Preconditions;
 import com.google.common.collect.Lists;
+
 /**
  * Action to perform date/time-shifts.
  * <p>
  * Usefull documentation can be found at {@link http://www.sno.phy.queensu.ca/~phil/exiftool/Shift.html}.
+ * 
  * @author phillip
  * @since v0.0.6
- *
+ * 
  */
 class DateTimeShiftAction extends AbstractAction implements IDateTimeShiftAction {
 
-    /**
-     * Hidden constructor. All initializations should occur from the {@link ActionFactory}.
-     */
-    DateTimeShiftAction() { 
-        super();
-    }
-    
-    /**
-     * The logger for this class.
-     */
-    private static final Logger LOG = LoggerFactory.getLogger(DateTimeShiftAction.class);
-    
-    /**
-     * The shift to perform without the shift direction
-     */
-    private String shift;
-    
-    /**
-     * The shift direction (either + or -)
-     */
-    private String shiftDirection;
-    
-    /**
-     * The list of date tags which must be modified
-     */
-    private Collection<DateTag> datesToModify;
-    
-    /**
-     * Sets the params.
-     * @param file the file from which you would like to change the Exif tag values.
-     * @param shift a string containing the amount to be shifted. The format should be accepted by ExifTool {@link http://www.sno.phy.queensu.ca/~phil/exiftool/Shift.html}
-     * @param datesToModify a list with DateTags which should be time-shifted
-     * @throws JExifException if the give value is not of a valid type.
-     * @throws IOException if the given file does not exist.
-     */
-    public void setParams(final File file, final String shift, final Collection<DateTag> datesToModify) throws IOException {
-        Preconditions.checkNotNull(file);
-        if (!file.exists()) {
-            throw new FileNotFoundException(Cal10nUtil.get(Errors.IO_FILE_NOT_VALID, file.getAbsolutePath()));
-        }
-        Preconditions.checkNotNull(shift);
-        Preconditions.checkArgument(shift.matches("[\\d:\\+\\- ]*"), Cal10nUtil.get(Errors.VALIDATION_TIMESHIFT, shift));
-        Preconditions.checkNotNull(datesToModify);
-        Preconditions.checkArgument(datesToModify.size() != 0, Cal10nUtil.get(Errors.VALIDATION_TAGLIST));
-        this.file = file;
-        if (shift.startsWith("+")) {
-            shiftDirection = "+";
-            this.shift = shift.substring(1);  
-        } else if (shift.startsWith("-")) {
-            shiftDirection = "-";
-            this.shift = shift.substring(1);
-        } else {
-            shiftDirection = "+";
-            this.shift = shift;
-        }
-        this.datesToModify = datesToModify;
-        if (datesToModify.contains(DateTag.ALLDATES)) {
-            datesToModify.removeAll(Lists.newArrayList(DateTag.CREATEDATE, DateTag.DATETIMEORIGINAL, DateTag.MODIFYDATE));  //ensure no doubles
-        }
-    }
-    
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    public String[] buildArguments() throws JExifException {
-        try {
-            int size = datesToModify.size() + 7;
-            String[] arguments = new String[size];
-            int i = 0;
-            arguments[i++] = ExecutionConstant.ECHO;
-            arguments[i++] = ExecutionConstant.START + " " + getId();
-            for (DateTag tag : datesToModify) {
-                arguments[i++] = "-" + tag.getTag().getName() + shiftDirection+ "=" + shift;
-            }
-            arguments[i++] = ExecutionConstant.EXACT_VALUE;
-            arguments[i++] = file.getCanonicalPath();
-            arguments[i++] = ExecutionConstant.ECHO;
-            arguments[i++] = ExecutionConstant.STOP + " " + getId();
-            arguments[i] = ExecutionConstant.EXECUTE;
-            LOG.trace("Arguments are : " + ArrayUtil.toString(arguments));
-            return arguments;
-        } catch (IOException e) {
-            throw new JExifException(Cal10nUtil.get(Errors.IO_BUILD_ARGUMENTS), e);
-        }
-    }
+	/**
+	 * Hidden constructor. All initializations should occur from the {@link ActionFactory}.
+	 */
+	DateTimeShiftAction() {
+		super();
+	}
+
+	/**
+	 * The logger for this class.
+	 */
+	private static final Logger LOG = LoggerFactory.getLogger(DateTimeShiftAction.class);
+
+	/**
+	 * The shift to perform without the shift direction
+	 */
+	private String shift;
+
+	/**
+	 * The shift direction (either + or -)
+	 */
+	private String shiftDirection;
+
+	/**
+	 * The list of date tags which must be modified
+	 */
+	private Collection<DateTag> datesToModify;
+
+	/**
+	 * Sets the params.
+	 * 
+	 * @param file the file from which you would like to change the Exif tag values.
+	 * @param shift a string containing the amount to be shifted. The format should be accepted by ExifTool {@link http://www.sno.phy.queensu.ca/~phil/exiftool/Shift.html}
+	 * @param datesToModify a list with DateTags which should be time-shifted
+	 * @throws JExifException if the give value is not of a valid type.
+	 * @throws IOException if the given file does not exist.
+	 */
+	public void setParams(final File file, final String shift, final Collection<DateTag> datesToModify) throws IOException {
+		Preconditions.checkNotNull(file);
+		if (!file.exists()) {
+			throw new FileNotFoundException(Cal10nUtil.get(Errors.IO_FILE_NOT_VALID, file.getAbsolutePath()));
+		}
+		Preconditions.checkNotNull(shift);
+		Preconditions.checkArgument(shift.matches("[\\d:\\+\\- ]*"), Cal10nUtil.get(Errors.VALIDATION_TIMESHIFT, shift));
+		Preconditions.checkNotNull(datesToModify);
+		Preconditions.checkArgument(datesToModify.size() != 0, Cal10nUtil.get(Errors.VALIDATION_TAGLIST));
+		this.file = file;
+		if (shift.startsWith("+")) {
+			shiftDirection = "+";
+			this.shift = shift.substring(1);
+		} else if (shift.startsWith("-")) {
+			shiftDirection = "-";
+			this.shift = shift.substring(1);
+		} else {
+			shiftDirection = "+";
+			this.shift = shift;
+		}
+		this.datesToModify = datesToModify;
+		if (datesToModify.contains(DateTag.ALLDATES)) {
+			datesToModify.removeAll(Lists.newArrayList(DateTag.CREATEDATE, DateTag.DATETIMEORIGINAL, DateTag.MODIFYDATE)); // ensure no doubles
+		}
+	}
+
+	/**
+	 * {@inheritDoc}
+	 */
+	@Override
+	public String[] buildArguments() throws JExifException {
+		try {
+			int size = datesToModify.size() + 7;
+			String[] arguments = new String[size];
+			int i = 0;
+			arguments[i++] = ExecutionConstant.ECHO;
+			arguments[i++] = ExecutionConstant.START + " " + getId();
+			for (DateTag tag : datesToModify) {
+				arguments[i++] = "-" + tag.getTag().getName() + shiftDirection + "=" + shift;
+			}
+			arguments[i++] = ExecutionConstant.EXACT_VALUE;
+			arguments[i++] = file.getCanonicalPath();
+			arguments[i++] = ExecutionConstant.ECHO;
+			arguments[i++] = ExecutionConstant.STOP + " " + getId();
+			arguments[i] = ExecutionConstant.EXECUTE;
+			LOG.trace("Arguments are : " + ArrayUtil.toString(arguments));
+			return arguments;
+		} catch (IOException e) {
+			throw new JExifException(Cal10nUtil.get(Errors.IO_BUILD_ARGUMENTS), e);
+		}
+	}
 
 }

File src/be/pw/jexif/internal/action/impl/TagReadAction.java

  * 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
+ * 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,
 
 /**
  * Action to read an EXIF-tag.
+ * 
  * @author phillip
  */
 class TagReadAction extends AbstractAction implements ITagReadAction {
 
 	/**
 	 * Allows settings the required parameters. AnnotationValidation is possible.
+	 * 
 	 * @param file the file from which the provided Tags should be read.
 	 * @param tags the Tags that must be read from the provided file.
 	 * @throws IOException if the given file does not exist.
 
 	/**
 	 * {@inheritDoc}
+	 * 
 	 * @throws JExifException in case of an IO-Exception.
 	 */
 	@Override

File src/be/pw/jexif/internal/action/impl/TagReadAllAction.java

  * 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
+ * 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,
 
 /**
  * Action that reads all the tag values from an image.
+ * 
  * @author phillip
  */
 class TagReadAllAction extends AbstractAction implements ITagReadAllAction {

File src/be/pw/jexif/internal/action/impl/TagReadExactAction.java

  * 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
+ * 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,
 
 /**
  * The TagReadExactAction will read out a Tag with it's exact value. So instead of an aperture of 2.8 you might get 2.79999456.
+ * 
  * @author phillip
  */
 class TagReadExactAction extends TagReadAction implements ITagReadExactAction {

File src/be/pw/jexif/internal/action/impl/TagReadExactAllAction.java

  * 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
+ * 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,
 
 /**
  * Action that reads all the tag values from an image.
+ * 
  * @author phillip
  */
 class TagReadExactAllAction extends TagReadAllAction implements ITagReadExactAllAction {

File src/be/pw/jexif/internal/action/impl/TagWriteAction.java

  * 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
+ * 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,
 
 /**
  * Action to write an Exif-Tag
+ * 
  * @author phillip
  */
 class TagWriteAction extends AbstractAction implements ITagWriteAction {
 
 	/**
 	 * Sets the params.
+	 * 
 	 * @param file the file from which you would like to change the Exif tag values.
 	 * @param valuesToWrite a Map combining the Tag-Value combination. The value element shall be written to the Tag.<br />
 	 *            If you want to clear a Tag, just specify an empty String.

File src/be/pw/jexif/internal/constants/ExecutionConstant.java

  * 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
+ * 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,
 /**
  * Some constants used before, during and after the execution of ExifTool.<br />
  * For the different Tags, see {@link be.pw.jexif.enums.tag}
+ * 
  * @author phillip
  */
 public class ExecutionConstant {
 	 * System property key for the deadlock-time in milliseconds.
 	 */
 	public static final String EXIFTOOLDEADLOCK = "exiftool.deadlock";
-	
+
 	/**
 	 * System property key for bypassing the validation of Tags
 	 */
 	public static final String EXIFTOOLBYPASSVALIDATION = "exiftool.validation.bypass";
-	
+
 	/**
 	 * Command line argument to keep ExifTool open.
 	 */
 	public static final String EXECUTE = "-execute";
 
 	/**
-     * Command line argument to have ExifTool copy tags from a file to a file
-     */
-    public static final String TAGSFROMFILE = "-tagsFromFile";
-	
+	 * Command line argument to have ExifTool copy tags from a file to a file
+