From ea5a1c1a5d7df9d037b6f75051a08fb41eb00cf2 Mon Sep 17 00:00:00 2001 From: JZITNIK-github Date: Fri, 5 Jul 2024 18:13:24 +0200 Subject: [PATCH] init --- .vscode/settings.json | 3 + pom.xml | 25 ++++++++ .../java/cz/jzitnik/CustomFitListener.java | 59 ++++++++++++++++++ src/main/java/cz/jzitnik/Editor.java | 32 ++++++++++ src/main/java/cz/jzitnik/Main.java | 33 ++++++++++ .../cz/jzitnik/CustomFitListener.class | Bin 0 -> 2692 bytes target/classes/cz/jzitnik/Editor.class | Bin 0 -> 2198 bytes target/classes/cz/jzitnik/Main.class | Bin 0 -> 1126 bytes 8 files changed, 152 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 pom.xml create mode 100644 src/main/java/cz/jzitnik/CustomFitListener.java create mode 100644 src/main/java/cz/jzitnik/Editor.java create mode 100644 src/main/java/cz/jzitnik/Main.java create mode 100644 target/classes/cz/jzitnik/CustomFitListener.class create mode 100644 target/classes/cz/jzitnik/Editor.class create mode 100644 target/classes/cz/jzitnik/Main.class 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 0000000000000000000000000000000000000000..857e1da6b05d022bb22ffe0298857c733f058050 GIT binary patch literal 2692 zcmaJ@TXz#x6#gccPBNWdXq!T5!Kz%6LJ6Q$O-dD7kZ1x(O0lTmG#SFQ%_Jrhpv5bK zc)u$uUSGUC=u(!p)UJiDrHcoiT!9;SiSKjTNZTn>XG2|2L>d#dNWB~ffIEqs-enQBB611t8KZQHYWB{P>(t< zBs8gz;gL`mHB5bXAw8t$`n91^=Fkw$B(%{1EoX@DlF?-yHJJX&=>HKU(#n{kb_vV; z3#J|zs74!B%2*+xb~Znenu_bt&U&8B$Y(>EeI|_NoSJAk+D9_ z(!@TiRjk2UVy1LUU`7JhqRI%6ss(6P;Kw=@>(R-w2tbl-wj(lv5}Fr?poff2tbN|v zj$^uM30f3v#7#n=<>GCNiZ0wDK_$5D(m$3Z|84%j{OV>_!(QBmu#C_mn+OCI-Pp>e zi}&x@dw5$kDq;EJcrtF6uw+(RxO^uZ-<;`aM3zIY_JM!wv}!!xS>ukwzvM zF|!3LZsl|>9ahkTJ4Kbd>^4})B`_d%xJ$*|V1CX_LC7-$wl`;(WiStROK|VYjD*@1 z?8QDA_mn%E+g5n0h@+pbSrIJ6u8^9E8D=UR7!auqs5pRoNsy_Z;B1?uyor?CY1-{p z@>XyV_sh7i%#XbmF)cl%=Ttm^Lxjj`xx7x>BKt)=c#s1g`|*7KhtCtCb`OS_VV`b_ zS9ZB)7u(g;#Mcpi#SF7x*%p^Y*3}aNr2uE{Ps9tSU=PENvgGyAhhazU) z(#!1@6e z5|+;EaIqpH6dcF6kp3h^Dk)&+V26rbHsTQ#kK!@5Ju?t7OgfzvZ9l(D%b?Uv4D%Br z^HV${{gDc>iidExQooW(#GF=fM$E4(Z;Z1X$>1--vi0&rE;bxuT6vtw`QkjVn&O^z zF{L5lx@%0=NTxfTF)eE5Olo5^9?cYJtm0)*u()egUQc99Ave!eTQqiD1>B523{8^A zxwnMP9Am{wQIwWNiIPwgx3t7aOv{$eZP6F3rF8qum9upJ1m*F2{;nDFm8rMys)qw-ESc<(?Pn0D# zPIJ+>gd=dT#|=c1aAP?`M-%g}CE}mX?oaTWfNh<^DhIxYKem1X9reBsab+4C2iH$x z^X|?G+n8JXt)6Rh+*ycmZp14gq|C4t$1Ae1Q%4j?tHS99+dF{EW@`mH2<~LKF(W zSmeB{KEJY&*C|DNDOb{dHT7T!zu207FEn5OSH38 z@eB^(CBAu>Nfa;h&C6Uuc!h5YGunbz@fv&MGV6F9Z?FTdqJfC#*r{(ZC;oBuH{8-+ u_{G6Y-o`uZo?=&@w|hBgcMjkd6n@D7hfQ4-&ETay+qmwT#(mfJdhb7_Z;yNc literal 0 HcmV?d00001 diff --git a/target/classes/cz/jzitnik/Editor.class b/target/classes/cz/jzitnik/Editor.class new file mode 100644 index 0000000000000000000000000000000000000000..329d5ab5303f387a7077d437007fc82d3907f3a4 GIT binary patch literal 2198 zcmZuyT~`}b6x|mRCJ6&ApCy1LZP7ycNU@?eX=^PXiiQuNQmL(Vk_=%WnTazK3aITv zAN3d5C!c(_53t&-<#H|Si$BDlVcmBKBurQp0l=geZsC9bX&BIrQ3 z%;20r*C}p?R~1BQ%2s>fno?tv_Tbb;~jx!Et@?u3dHKL zWgtg(dWfJ0Ln?-Gg=91TtiXdx){?X;FG+upCxA{fPV4KkL0F2azx$HjQ59pdL4ujQ z<*;R9h^x3NcOnHVYpm~1Yp$l?T~gyCM%HS^luWZL-xE-4ix|N*bcgW)t}FOZ;9}if zcW}wJTq|ScS9RNATq+WfO}0Am=&Hb=KMB(8zmbe!0ykyh*!PoFqGVuo44rmgG9JTi z6(8dcigbGaj(|C-_t#WU!eu4yi!* ziQ99PeIk5@l!DI*Uqv{ws+h+D2{82?PFd#>Ld}>b6)bUzd|b-fOD2|8tl%yy`PgP4 z0zId;8{14qv8v)8z7kM2G-ttcNa0{ZOkgyOukld9gA+Qlvdb1PsQ3nts4-TF5q2H& z!_Hiy22>_C8G<<1SQ2V5 zRIJN^SBergZwj;+vh`(Imo#@nN|(o;$4o_lSQ7?y;#9MD>rhApqQ}wtG=@Fbl=TFI zI^^%V%J5S^3nw*$)9gPh>rkUA#0}*u!axbCRn$7+;MwN&>Nrtm{NOU^%CN~Hkw~sNOne-$aH`Bc^Q|)a+K#x%Gp$2a~z%0{Ua&& zdEz*c6yFHr0@xheCd2MGP{nIn8kGZ02IpX%WOzFWM#R-7To zS*`=Lv`HB8kdR^S{9H!I8lk%8%jj7dR786ReDXQ$_ z3%T{Bz%Ot9jW+FL?FH_)f4h&g%%%}Cn_G++%q7em+L%QjS~18BM$nE)bmBU?d8P-; zh@yaAxO_iBKc3+{e!_sq!ZJcKKjg5%w_F)q31U9OCbq~(8@@-L_Zx}-9ZXo{XOL%# z{1+s40yZ2nTOeaDN_=h;=Moy;K$D-t$KJ0)L63qy1u=yquTT&eWCM12v;li`0j4A< K-#_5V?dbo1AUtyb literal 0 HcmV?d00001 diff --git a/target/classes/cz/jzitnik/Main.class b/target/classes/cz/jzitnik/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..70300503fc35b6877eee99c6c36dbf452ce0e892 GIT binary patch literal 1126 zcmZuw>rNU`5dID>EUXJ&)(cQuOD_sq-CnH~wK3L48q_8jlBT~FJi_X-OO}IL-=vS> zA8gvB56~y-pPJ5L@zTa@GUuGRd^7XS?5~UOKLM=Zt%?xCK=sr-IJJdqADUa1?W#~1 z1`n(w%XBQaX6{rDcvUb&mTlJ-s|x_x8AkKE!l{5h0wS?egt*qr&}NtKx8m z;i6ZyoU-NH^4(J^qHebshKm2C%@bsU(ld-@KNqjlmxOP-wY*HJZJbnjQ`nx{QZdY6 zbiHiPEbLraRE#hrrQyVE9aE(F;l1tf^}6S^xUa!LOp0+GNu(GOt-5!-)8y_u+j6`b z!+18xZ5<19-D@;Gm%AdLE6AWbIwo+JI<0Y0;tsLG_ar#cmCXfVRE*T*rTe6g`^YfF zTU-S2yI-2*tYizhvUGT;UK*y5RWZ$=Up6Q)b>uJ;BwwqvJf|)AM@!Th zMlO?g$JOIY!xPM_m?Nfd5WTTy3(wbK;wja^>BTVJ>-c8$?ffg2U!&0(w~U9OfB%|h zhIALr`+Y9jzFW4OHqpTf4AFhxYXnp#{w0zcmcWvo-V8}|BVHP4H-#5O$4kPh z9&TC9-nMBaukBZPV2sK2o|l{=1KMNy34jpYXn#qn^fKvWbcScn5k2dgHImW{a_A?i z2M%<`=@ml)0|YWicZDoNU6|jbk#L0{Fg~4Qv^dK;7+ab63gv9JgYWr2-Q44O4o9WD+CP)hMPhPFVRUx!AmdF|= gtT=ft5*^DFZy@vsh6;mSAfsYR-Uw`kOd+iP1vH}gjQ{`u literal 0 HcmV?d00001