commit ea5a1c1a5d7df9d037b6f75051a08fb41eb00cf2 Author: JZITNIK-github Date: Fri Jul 5 18:13:24 2024 +0200 init diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..c5f3f6b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..6cf042f --- /dev/null +++ b/pom.xml @@ -0,0 +1,25 @@ + + + 4.0.0 + + cz.jzitnik + fit + 1.0-SNAPSHOT + + + 17 + 17 + + + + + com.garmin + fit + 21.141.0 + + + + + \ No newline at end of file diff --git a/src/main/java/cz/jzitnik/CustomFitListener.java b/src/main/java/cz/jzitnik/CustomFitListener.java new file mode 100644 index 0000000..a5bf28e --- /dev/null +++ b/src/main/java/cz/jzitnik/CustomFitListener.java @@ -0,0 +1,59 @@ +package cz.jzitnik; + +import java.util.ArrayList; +import java.util.Calendar; +import java.util.Date; +import java.util.List; +import java.util.Scanner; + +import com.garmin.fit.*; + +class CustomFitListener implements MesgListener { + private List messages = new ArrayList<>(); + + @Override + public void onMesg(Mesg mesg) { + messages.add(mesg); + } + + public void modifyData() { + for (int i = 0; i < messages.size(); i++) { + Mesg mesg = messages.get(i); + if (mesg.getNum() == MesgNum.EVENT) { + EventMesg eventMesg = new EventMesg(mesg); + if (eventMesg.getEventType() == EventType.STOP_ALL) { + Scanner scanner = new Scanner(System.in); + System.out.print("Rok: "); + int year = Integer.parseInt(scanner.nextLine()); + + System.out.print("Měsíc: "); + int month = Integer.parseInt(scanner.nextLine()) - 1; + + System.out.print("Den: "); + int day = Integer.parseInt(scanner.nextLine()); + + System.out.print("Hodina: "); + int hour = Integer.parseInt(scanner.nextLine()); + + System.out.print("Minuta: "); + int minute = Integer.parseInt(scanner.nextLine()); + + System.out.print("Sekunda: "); + int second = Integer.parseInt(scanner.nextLine()); + + + Calendar calendar = Calendar.getInstance(); + calendar.set(year, month, day, hour, minute, second); + Date date = calendar.getTime(); + DateTime dateTime = new DateTime(date); + eventMesg.setTimestamp(dateTime); + messages.set(i, eventMesg); + } + } + } + } + + public List getMessages() { + return messages; + } +} diff --git a/src/main/java/cz/jzitnik/Editor.java b/src/main/java/cz/jzitnik/Editor.java new file mode 100644 index 0000000..2dd7318 --- /dev/null +++ b/src/main/java/cz/jzitnik/Editor.java @@ -0,0 +1,32 @@ +package cz.jzitnik; + +import java.io.FileInputStream; +import java.io.IOException; + +import com.garmin.fit.*; +import com.garmin.fit.Fit.ProtocolVersion; + +public class Editor { + public static void edit(String inputFilePath, String outputFilePath) throws IOException { + FileInputStream inputStream = new FileInputStream(inputFilePath); + Decode decode = new Decode(); + MesgBroadcaster mesgBroadcaster = new MesgBroadcaster(decode); + CustomFitListener listener = new CustomFitListener(); + + mesgBroadcaster.addListener(listener); + + decode.read(inputStream, mesgBroadcaster, mesgBroadcaster); + + inputStream.close(); + + listener.modifyData(); + + FileEncoder fileEncoder = new FileEncoder(new java.io.File(outputFilePath), ProtocolVersion.V1_0); + for (Mesg mesg : listener.getMessages()) { + fileEncoder.write(mesg); + } + fileEncoder.close(); + + System.out.println("Soubor byl úspěšně upraven."); + } +} diff --git a/src/main/java/cz/jzitnik/Main.java b/src/main/java/cz/jzitnik/Main.java new file mode 100644 index 0000000..4ef05f6 --- /dev/null +++ b/src/main/java/cz/jzitnik/Main.java @@ -0,0 +1,33 @@ +package cz.jzitnik; + +import java.io.IOException; + +import javax.swing.JFileChooser; + +public class Main { + public static void main(String[] args) throws IOException { + + JFileChooser fileChooser = new JFileChooser(); + + int returnValue = fileChooser.showOpenDialog(null); + + if (returnValue != JFileChooser.APPROVE_OPTION) { + return; + } + + java.io.File fromFile = fileChooser.getSelectedFile(); + + JFileChooser fileSaveChooser = new JFileChooser(); + fileSaveChooser.setDialogType(JFileChooser.SAVE_DIALOG); + + int returnValueSave = fileSaveChooser.showSaveDialog(null); + + if (returnValueSave != JFileChooser.APPROVE_OPTION) { + return; + } + + + java.io.File toFile = fileSaveChooser.getSelectedFile(); + Editor.edit(fromFile.getAbsolutePath(), toFile.getAbsolutePath()); + } +} diff --git a/target/classes/cz/jzitnik/CustomFitListener.class b/target/classes/cz/jzitnik/CustomFitListener.class new file mode 100644 index 0000000..857e1da Binary files /dev/null and b/target/classes/cz/jzitnik/CustomFitListener.class differ diff --git a/target/classes/cz/jzitnik/Editor.class b/target/classes/cz/jzitnik/Editor.class new file mode 100644 index 0000000..329d5ab Binary files /dev/null and b/target/classes/cz/jzitnik/Editor.class differ diff --git a/target/classes/cz/jzitnik/Main.class b/target/classes/cz/jzitnik/Main.class new file mode 100644 index 0000000..7030050 Binary files /dev/null and b/target/classes/cz/jzitnik/Main.class differ