From e6ace3a78758af85c4e1e1c485442b3e7ac8da72 Mon Sep 17 00:00:00 2001 From: Michael Zillgith Date: Wed, 24 Oct 2018 17:36:52 +0200 Subject: [PATCH] - Java SCL parser: added support for timestamp values in "Val" elements --- tools/model_generator/genmodel.jar | Bin 89228 -> 89615 bytes .../libiec61850/scl/model/DataModelValue.java | 22 ++++++++++++++++++ .../tools/StaticModelGenerator.java | 5 ++++ 3 files changed, 27 insertions(+) diff --git a/tools/model_generator/genmodel.jar b/tools/model_generator/genmodel.jar index a00927c6e3e7b772b712f97a4493b7a994e4d130..2da7859e584b8deaed1abca51a5fcab5397bc2de 100644 GIT binary patch delta 21459 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⁢I#azTe(Marg^Jet9r|-JXzgz@iIBgPF|C%Hm&j?Sq0gGOE<8W zJj8P4{v!^3L!!AWT{{QFshg(9XJG|Pu0c`U=P?Tv#mDl$$~Y2msMhwJELpSfGnQ-1 zPKc1@D*K+D6p~1`C~g>)vM)7s%9cc^P$nj!j4VY`;aamMM6wl9`oD9=?Q;Klc%JjT z`|^G7_nvQflQeX@pj&Pu!e0xNi;dd)D*lwD&Ir`t=l>q&j_dOBu**G!Pk!NQC+Auw zN#?k4S5AptX~wZ#G5&97!)_0aizdrm47oe2sp5#>KR}*k8l5rLP$C!fx25L<2AJ&?i7Iq1aO{>bDJf$(}ca>vN`r8_; z*ZM7npcb<3lFNBTYEN*FM5=a(i_Mc94r?Z*Kfjc9XbM%KLV>f#JzSE_8O|A31 z<$2?v)O?mHQtvzWo1W%p{dH;2%QD~3hpf4hnG$G6#M`S(5}(gyj>zw>!3Xjt`y_wo zOR8aOnKcON@lOw7&P%6jhBMfT+w-zBnIxEwj*V+7mdwsGrSvAW298eN4)7{}*LuaB z)PbwzXv+S+JO5j?^7X;gJvL?eiOZP{Up-cORtIYoLwSC9JPwy__3<+FR(vnQ5>ibY zm{e~W=T086YPWQAc5#NuN%)NCw#Bp3g1Q;Pce(U$p2Ku|Xst0SmrV1kMc>G#`w}PO zZ6niMKEIs*tuOO19s6?)rT)p)@>$2ZBH89T*G5@(k>EI%cRe{5 zUB>iU#_+&r2ZXOD&YtP#&3Zs{_U*k@|Jp>B5yBm#ZX3BjZOXe8-kVvThz}66Hyq%g z!#%okeAE|fi2cZ(+SE8fJ;vUA@w(-gOqvkpBXK>}mJvK`lLirS686!@?Gw1|Q|Oj% z5zLzy?BnIR8>FjPy(kn*V~E(L_3tVh(O&W|54T zuj(C)o+h^1Dn)whw_odE!25BYAg~gXlF1BP((re2fvb@x3 zev0bWliY?2H)`8QK2-G=Sv4^_))XJndoATa9$~JDh_Qdx-IvasUOf$M$!KW?{RF+0>jJ-*W8*eq854{kO#}r_*dng~b zviEo=RiO6gJB7=^K83jM6s^>lx=Vp}X7g{kcuvx=TvXIeXLl|>ShABeA~9yYtb_F9 z?{5EfHUTu@Je*r6R3Lr$`TKK}$uic9GQ^w*S13KWQk4NU(g70y6ppfnSc#QSLMf2E zJ{h9pvzO3j(=9`^Bxn7nD~`5-IEk{2!Dt&#yw#$;3+<-YsUaC6^WSL{a9*F}zbXa} z0Tnbu+!R4zM8@y-dKX?yN#4`X{q*U&4ATGsJKoE~9S_G%bDFCk88f8oGMk%}cuMY- zk}FKv?-RRvwSPRFRT!5Vd+c32u5bJgd)s`SJob=OYW9I^f5fofO*`7eKp%x+|A7&6 ze5f07^N_j-XNh0h)ye%GH%{Lqyi|LJk7Chf7+}k8B)VgpN)%yse7-XH&c)_}6FFO0 z?gd>g$16q)#$29kwrs9iVRgwc>p-_OE?K(Z3$?l&vJCQc@(jzuZVdUlMosquG;%AQ zRL+jspVXYw2yLm_^Kxz3tk$!7;j{hoGviJjCpEv8c?$%5?xh~iw4lqWbS;_=o1}|8 z)G0%aPZ?mRWwhv&55<#a&I~Bd$oDYW?(clks=S=7W*%qj^1jMTL1QsOEa0!>))LN2 z@5>^6+iH(5sylZEyWondtsm93+l$6|uomuabxiSKw>%I;pRxO{BAsD@X@hE(K)lVp z{>r^PxPenAKA*XVJ7}I+N+-|g#(kf`jqN_Y8&|DF*x?8AkN;4l!H1p~KSAe57P!Dn zzEjWUM_N~cwK93~##D~?*cXA6rSk{A9`E#@bR~8^)Qq{_Z&m%&%SF)r zlY6Wv_Sedt^`T?GRHw-tx!IX+GFrz-%0D(9*_0OBRb0L%Y4$5Ng=}9ls$xz$>$A$e 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 b1OvMwbG?-yQYA~K6zq%Y?4S37HH7&;l+9Q) diff --git a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java index 1d4fb21a..2b0da485 100644 --- a/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java +++ b/tools/model_generator/src/com/libiec61850/scl/model/DataModelValue.java @@ -1,5 +1,7 @@ package com.libiec61850.scl.model; +import java.text.SimpleDateFormat; + /* * DataModelValue.java * @@ -24,6 +26,7 @@ package com.libiec61850.scl.model; */ import java.util.Base64; +import java.util.Date; import com.libiec61850.scl.types.EnumerationType; import com.libiec61850.scl.types.IllegalValueException; @@ -162,6 +165,25 @@ public class DataModelValue { this.value = null; System.out.println("Warning: Initialization of QUALITY is unsupported!"); break; + + case TIMESTAMP: + case ENTRY_TIME: + try { + String modValueString = value.replace(',', '.'); + + SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-d'T'HH:mm:ss.SSS"); + + Date date = parser.parse(modValueString); + + this.value = new Long(date.toInstant().toEpochMilli()); + } + catch (java.text.ParseException e) { + this.value = null; + System.out.println("Warning: Val element does not contain a valid time stamp: " + e.getMessage()); + } + + break; + default: throw new IllegalValueException("Unsupported type " + type.toString() + " value: " + value); } diff --git a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java index 2db231b4..c790ed6a 100644 --- a/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java +++ b/tools/model_generator/src/com/libiec61850/tools/StaticModelGenerator.java @@ -805,6 +805,11 @@ public class StaticModelGenerator { case FLOAT64: buffer.append("MmsValue_newDouble(" + value.getValue() + ");"); break; + + case TIMESTAMP: + buffer.append("MmsValue_newUtcTimeByMsTime("+ value.getValue() + ");"); + break; + default: System.out.println("Unknown default value for " + daName + " type: " + dataAttribute.getType()); buffer.append("NULL;");