diff --git a/db.properties b/db.properties index 8ec6509..d00c309 100644 --- a/db.properties +++ b/db.properties @@ -2,6 +2,12 @@ URL=jdbc:postgresql://localhost/petroparser USER=petroparser PASSWORD=petroparser WOERTERBUCH=woerterbuch.woerterbuch +WBKUERZEL=kuerzel +WBKLARTEXT=klartext +WBTYP=typ +WBATTRIBUTE=attribute SCHLUESSELTYPEN=woerterbuch.schluesseltypen +STNEBENTYPBEZ=nebentypbez +STDATENFELD=datenfeld SCHLUESSELMAPPING=bml.bml_schluesselmapping DATEFIELD=PETRO diff --git a/src/main/java/org/sep3tools/JavaConnector.java b/src/main/java/org/sep3tools/JavaConnector.java index 018c8f4..5a1b1bc 100644 --- a/src/main/java/org/sep3tools/JavaConnector.java +++ b/src/main/java/org/sep3tools/JavaConnector.java @@ -4,7 +4,11 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; -import java.sql.*; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; +import java.sql.ResultSet; import java.util.Properties; import java.util.logging.Logger; @@ -29,8 +33,20 @@ public final class JavaConnector { private static String wb; + private static String wbKuerzel; + + private static String wbKlartext; + + private static String wbTyp; + + private static String wbAttribute; + private static String st; + private static String stDatenfeld; + + private static String stNebentypbez; + private static String sm; private static String df; @@ -53,7 +69,13 @@ public static void setPropertiesFile(String filename) { setUser(properties.getProperty("USER")); setPass(properties.getProperty("PASSWORD")); setWb(properties.getProperty("WOERTERBUCH")); + setWbAttribute(properties.getProperty("WBATTRIBUTE")); + setWbKlartext(properties.getProperty("WBKLARTEXT")); + setWbKuerzel(properties.getProperty("WBKUERZEL")); + setWbTyp(properties.getProperty("WBTYP")); setSt(properties.getProperty("SCHLUESSELTYPEN")); + setStDatenfeld(properties.getProperty("STDATENFELD")); + setStNebentypbez(properties.getProperty("STNEBENTYPBEZ")); setSm(properties.getProperty("SCHLUESSELMAPPING")); setDf(properties.getProperty("DATEFIELD")); } @@ -65,14 +87,6 @@ public static void setPropertiesFile(String filename) { } } - public static void setWb(String wb) { - JavaConnector.wb = wb; - } - - public static void setSt(String st) { - JavaConnector.st = st; - } - public static void setSm(String sm) { JavaConnector.sm = sm; } @@ -96,12 +110,44 @@ public static void setUrl(String newUrl) { JavaConnector.m_url = newUrl; } + public static void setWb(String wb) { + JavaConnector.wb = wb; + } + + public static void setWbKuerzel(String wbKuerzel) { + JavaConnector.wbKuerzel = wbKuerzel; + } + + public static void setWbKlartext(String wbKlartext) { + JavaConnector.wbKlartext = wbKlartext; + } + + public static void setWbTyp(String wbTyp) { + JavaConnector.wbTyp = wbTyp; + } + + public static void setWbAttribute(String wbAttribute) { + JavaConnector.wbAttribute = wbAttribute; + } + + public static void setSt(String st) { + JavaConnector.st = st; + } + + public static void setStDatenfeld(String stDatenfeld) { + JavaConnector.stDatenfeld = stDatenfeld; + } + + public static void setStNebentypbez(String stNebentypbez) { + JavaConnector.stNebentypbez = stNebentypbez; + } + // String query = "SELECT Klartext from woerterbuch.Woerterbuch where Kuerzel="; - private static void setConn(String url, String user, String pass) throws SQLException { + private static void setConn() throws SQLException { if (conn != null && !conn.isClosed()) conn.close(); - JavaConnector.conn = DriverManager.getConnection(url, user, pass); + JavaConnector.conn = DriverManager.getConnection(m_url, user, pass); credChanged = false; } @@ -115,7 +161,7 @@ public static String getS3Name(String sep3Code) throws SQLException { String query = getQueryString(wb, st, df); if (credChanged) - setConn(m_url, user, pass); + setConn(); PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, sep3Code); LOG.fine("Executing statement: " + stmt); @@ -135,9 +181,9 @@ public static String getS3Name(String sep3Code) throws SQLException { } private static String getQueryString(String woerterbuch, String schluesselypen, String datenfeld) { - return "select kuerzel, klartext from " + woerterbuch + " w join " + schluesselypen + " s " - + "on w.typ = s.nebentypbez where (s.datenfeld = '" + datenfeld + "' " - + "OR s.datenfeld = 'diverse') AND kuerzel= ?"; + return "select " + wbKuerzel + ", " + wbKlartext + " from " + woerterbuch + " w join " + schluesselypen + " s " + + "on w." + wbTyp + " = s." + stNebentypbez + " where (s." + stDatenfeld + " = '" + datenfeld + "' " + + "OR s." + stDatenfeld + " = 'diverse') AND " + wbKuerzel + " = ?"; } public static String getS3inDfName(String datefield, String sep3Code) throws SQLException { @@ -163,7 +209,7 @@ public static String getS3inDfName(String datefield, String sep3Code) throws SQL } if (credChanged) - setConn(m_url, user, pass); + setConn(); PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, sep3Code); LOG.fine("Executing statement: " + stmt); @@ -192,7 +238,7 @@ public static String getS3AsBMmlLitho(String sep3Code) throws SQLException { String query = "select bml_code from " + sm + " where sep3_codelist = 'S3PETRO' AND sep3_code = ?"; if (credChanged) - setConn(m_url, user, pass); + setConn(); PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, sep3Code); LOG.fine("Executing statement: " + stmt); @@ -211,6 +257,41 @@ public static String getS3AsBMmlLitho(String sep3Code) throws SQLException { } } + /** + * sets db properties for table and column names from database table + * @throws SQLException if DB error occurs + */ + public static void setPropertiesFromDB() throws SQLException { + String dbpart = "part"; + String dbvalue = "value"; + String mdtable = "public.sep3tools"; + Properties properties = new Properties(); + + String query = "select " + dbpart + ", " + dbvalue + " from " + mdtable; + if (credChanged) + setConn(); + PreparedStatement stmt = conn.prepareStatement(query); + try (ResultSet rs = stmt.executeQuery()) { + while (rs.next()) { + properties.setProperty(rs.getString(1), rs.getString(2)); + } + setWb(properties.getProperty("WOERTERBUCH")); + setWbAttribute(properties.getProperty("WBATTRIBUTE")); + setWbKlartext(properties.getProperty("WBKLARTEXT")); + setWbKuerzel(properties.getProperty("WBKUERZEL")); + setWbTyp(properties.getProperty("WBTYP")); + setSt(properties.getProperty("SCHLUESSELTYPEN")); + setStDatenfeld(properties.getProperty("STDATENFELD")); + setStNebentypbez(properties.getProperty("STNEBENTYPBEZ")); + setSm(properties.getProperty("SCHLUESSELMAPPING")); + setDf(properties.getProperty("DATEFIELD")); + // System.out.println (properties.toString()); + + rs.close(); + stmt.close(); + } + } + /** * Retrieves allowed attributes for a given SEP3 code * @param sep3Code for which attributes are requested @@ -218,13 +299,15 @@ public static String getS3AsBMmlLitho(String sep3Code) throws SQLException { * @throws SQLException if DB error occurs */ public static String getAllowedAttribs(String sep3Code) throws SQLException { - String query = "select kuerzel, attribute from " + wb + " w join " + st + " s " + "on w.typ = s.nebentypbez " - + "where (s.datenfeld = 'PETRO' OR s.datenfeld = 'diverse') AND kuerzel= ?"; + String query = "select " + wbKuerzel + ", " + wbAttribute + " from " + wb + " w join " + st + " s " + "on w." + + wbTyp + " = s." + stNebentypbez + " where (s." + stDatenfeld + " = 'PETRO' OR s." + stDatenfeld + + " = 'diverse') AND " + wbKuerzel + " = ?"; if (credChanged) - setConn(m_url, user, pass); + setConn(); PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, sep3Code); LOG.fine("Executing statement: " + stmt); + try (ResultSet rs = stmt.executeQuery()) { boolean validRS = rs.next(); String result = ""; @@ -254,10 +337,11 @@ public static String getItemQuant(String sep3Code, String quant) throws SQLExcep allowedAttributes = getAllowedAttribs(sep3Code); quantBez = getQuantBezFromAttribs(allowedAttributes); - String query = "select w.kuerzel, w.klartext, s.nebentypbez from " + wb + " w join " + st + " s " - + "on w.typ = s.nebentypbez where (s.nebentypbez = ? AND w.kuerzel = ?);"; + String query = "select w." + wbKuerzel + ", w." + wbKlartext + ", s." + stNebentypbez + " from " + wb + + " w join " + st + " s " + "on w." + wbTyp + " = s." + stNebentypbez + " where (s. " + stNebentypbez + + " = ? AND w." + wbKuerzel + " = ?);"; if (credChanged) - setConn(m_url, user, pass); + setConn(); PreparedStatement stmt = conn.prepareStatement(query); stmt.setString(1, quantBez); stmt.setString(2, quant); diff --git a/src/main/java/org/sep3tools/Launch.java b/src/main/java/org/sep3tools/Launch.java index b818e84..4e46eb9 100644 --- a/src/main/java/org/sep3tools/Launch.java +++ b/src/main/java/org/sep3tools/Launch.java @@ -5,9 +5,8 @@ import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.tree.ParseTree; import org.postgresql.pljava.annotation.Function; -import org.sep3tools.gen.*; - -import java.sql.SQLException; +import org.sep3tools.gen.PetroGrammarLexer; +import org.sep3tools.gen.PetroGrammarParser; /** * Command line launcher for SEP3 tools @@ -53,7 +52,7 @@ else if (args.length == 2) { + "\"G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg2,mx(voe))\""); return; } - String visit = S3_AsText(sep3String); + String visit = convertS3ToText(sep3String); System.out.println(visit); } @@ -62,7 +61,7 @@ else if (args.length == 2) { * @param s3String coded SEP3 string parsing * @return human readable format of SEP3 input */ - protected static String S3_AsText(String s3String) { + protected static String convertS3ToText(String s3String) { CharStream input = CharStreams.fromString(s3String); PetroGrammarLexer lexer = new PetroGrammarLexer(input); CommonTokenStream tokens = new CommonTokenStream(lexer); @@ -87,7 +86,44 @@ public static String S3_AsText(String s3String, String wb, String st, String df) JavaConnector.setWb(wb); JavaConnector.setSt(st); JavaConnector.setDf(df); - return S3_AsText(s3String); + return convertS3ToText(s3String); + } + catch (Exception e) { + return ""; + } + } + + /** + * translates a coded SEP3 String to a human readable format. needed for in database + * use. Returns empty String, if exception is catched. + * @param s3String coded SEP3 string parsing + * @param df Datenfeld + * @return human readable format of SEP3 input + */ + @Function + public static String S3_AsText(String s3String, String df) { + try { + JavaConnector.setPropertiesFromDB(); + JavaConnector.setDf(df); + return convertS3ToText(s3String); + } + catch (Exception e) { + return ""; + } + } + + /** + * translates a coded SEP3 String to a human readable format. Needed for in database + * use. Returns empty String, if exception is catched. Uses configured standard + * datefiled + * @param s3String coded SEP3 string parsing + * @return human readable format of SEP3 input + */ + @Function + public static String S3_AsText(String s3String) { + try { + JavaConnector.setPropertiesFromDB(); + return convertS3ToText(s3String); } catch (Exception e) { return ""; @@ -110,4 +146,4 @@ public static String S3_AsText_verbose(String s3String, String wb, String st, St return S3_AsText(s3String); } -} \ No newline at end of file +} diff --git a/src/main/java/org/sep3tools/PetroVisitor.java b/src/main/java/org/sep3tools/PetroVisitor.java index 6ce00ae..fdbeb37 100644 --- a/src/main/java/org/sep3tools/PetroVisitor.java +++ b/src/main/java/org/sep3tools/PetroVisitor.java @@ -2,7 +2,7 @@ import org.sep3tools.gen.*; -import java.sql.*; +import java.sql.SQLException; import java.util.logging.Logger; import static java.util.Objects.isNull; diff --git a/src/main/resources/beschbgtest.properties b/src/main/resources/beschbgtest.properties index e1db361..0acbe17 100644 --- a/src/main/resources/beschbgtest.properties +++ b/src/main/resources/beschbgtest.properties @@ -1,3 +1,3 @@ -kb2,kb3(un)=schlechte Kornbindung, mäßige Kornbindung (unten) +kb2,kb3(un)=schlechte Kornbindung, mäßige Kornbindung (unten) idm=Mitte (stf-hfe)(ob),(stf)(idm),(stf-hfe,stf)(un)=(steif bis halbfest) (oben), (steif) (Mitte), (steif bis halbfest, steif) (unten) diff --git a/src/main/resources/beschbvtest.properties b/src/main/resources/beschbvtest.properties index 1e4fa59..8bce92d 100644 --- a/src/main/resources/beschbvtest.properties +++ b/src/main/resources/beschbvtest.properties @@ -1 +1 @@ -spvl(30%-40%,tv(29.02-29.23))=Spülverlust [Prozent] (30% bis 40%, Teufe von (29,02 bis 29,23)) \ No newline at end of file +spvl(30%-40%,tv(29.02-29.23))=Spülverlust [Prozent] (30% bis 40%, Teufe von (29,02 bis 29,23)) \ No newline at end of file diff --git a/src/main/resources/bgruppetest.properties b/src/main/resources/bgruppetest.properties index 81bc73e..7a8ca17 100644 --- a/src/main/resources/bgruppetest.properties +++ b/src/main/resources/bgruppetest.properties @@ -1 +1 @@ -GE=Kies, enggestuft \ No newline at end of file +GE=Kies, enggestuft diff --git a/src/main/resources/farbetest.properties b/src/main/resources/farbetest.properties index afc60cb..a84bbe9 100644 --- a/src/main/resources/farbetest.properties +++ b/src/main/resources/farbetest.properties @@ -12,11 +12,11 @@ olst=olivstichig sw=schwarz ge=gelb dgr=dunkelgrau -gn=grün +gn=grün rs=rosa ddro=sehr dunkelrot holst=hellolivstichig -gnli=grünlich +gnli=grünlich grst=graustichig robn=rotbraun blro=blaurot @@ -24,5 +24,5 @@ mtol=mattoliv mtolst=mattolivstichig drohbngr,blro,ddro,hgrbn,mtgr,mtol,mtolst=dunkelrothellbraungrau, blaurot, sehr dunkelrot, hellgraubraun, mattgrau, mattoliv, mattolivstichig dro-hgr=dunkelrot bis hellgrau -robn,sw,ge,dgr-gn,swgerobnrs=rotbraun, schwarz, gelb, dunkelgrau bis grün, schwarzgelbrotbraunrosa -gnli,grst=grünlich, graustichig +robn,sw,ge,dgr-gn,swgerobnrs=rotbraun, schwarz, gelb, dunkelgrau bis grün, schwarzgelbrotbraunrosa +gnli,grst=grünlich, graustichig diff --git a/src/main/resources/fremddatenfeldtest.properties b/src/main/resources/fremddatenfeldtest.properties index aa9cbb3..08e3485 100644 --- a/src/main/resources/fremddatenfeldtest.properties +++ b/src/main/resources/fremddatenfeldtest.properties @@ -1,4 +1,4 @@ -G(F\:ro)=Kies [gerundet] (rot) -G(F\:ddro)=Kies [gerundet] (sehr dunkelrot) -U(hz(res),H(res),zg1,F\:mtolst)=Schluff (Holzreste (Reste), Torf (Reste), sehr schwach zersetzt, mattolivstichig) +G(F:ro)=Kies [gerundet] (rot) +G(F:ddro)=Kies [gerundet] (sehr dunkelrot) +U(hz(res),H(res),zg1,F:mtolst)=Schluff (Holzreste (Reste), Torf (Reste), sehr schwach zersetzt, mattolivstichig) diff --git a/src/main/resources/genesetest.properties b/src/main/resources/genesetest.properties index 0e92985..92c59bf 100644 --- a/src/main/resources/genesetest.properties +++ b/src/main/resources/genesetest.properties @@ -1,11 +1,11 @@ -as,Lou(lok)=Abspülung, Schwemmlöss (lokal) -Mg,Gb(P\:^kkn)=Geschiebemergel, Geschiebe (Knollenkalk) -y=Auffüllung [allgemein] +as,Lou(lok)=Abspülung, Schwemmlöss (lokal) +Mg,Gb(P:^kkn)=Geschiebemergel, Geschiebe (Knollenkalk) +y=Auffüllung [allgemein] ya=Asche (anthropogen) lok=lokal -y,(ya,P\:fG)(lok)=Auffüllung [allgemein], (Asche (anthropogen), Feinkies [2,0-6,3 mm]) (lokal) -(P\:t4)=(stark tonig) +y,(ya,P:fG)(lok)=Auffüllung [allgemein], (Asche (anthropogen), Feinkies [2,0-6,3 mm]) (lokal) +(P:t4)=(stark tonig) (Mg,lw)=(Geschiebemergel, lagenweise) -gf,g=glazifluviatil, glaziär -(P\:t4)(Mg,lw),gf,g=(stark tonig) (Geschiebemergel, lagenweise), glazifluviatil, glaziär -(P\:fs,P\:ms)(Mg),g=(feinsandig, mittelsandig) (Geschiebemergel), glaziär +gf,g=glazifluviatil, glaziär +(P:t4)(Mg,lw),gf,g=(stark tonig) (Geschiebemergel, lagenweise), glazifluviatil, glaziär +(P:fs,P:ms)(Mg),g=(feinsandig, mittelsandig) (Geschiebemergel), glaziär diff --git a/src/main/resources/kalkgehtest.properties b/src/main/resources/kalkgehtest.properties index d2b85d4..42d8a23 100644 --- a/src/main/resources/kalkgehtest.properties +++ b/src/main/resources/kalkgehtest.properties @@ -1,3 +1,3 @@ zg1-zg2(ob)=sehr schwach zersetzt bis schwach zersetzt (oben) -kf,k(lse,F\:we)=kalkfrei, kalkhaltig (als Linse, weiss) -k,k(lse,F\:we)=kalkhaltig, kalkhaltig (als Linse, weiss) +kf,k(lse,F:we)=kalkfrei, kalkhaltig (als Linse, weiss) +k,k(lse,F:we)=kalkhaltig, kalkhaltig (als Linse, weiss) diff --git a/src/main/resources/petrotest.properties b/src/main/resources/petrotest.properties index ca3d7f1..f40f5cf 100644 --- a/src/main/resources/petrotest.properties +++ b/src/main/resources/petrotest.properties @@ -2,18 +2,18 @@ ^u=Schluffstein ^gs=Grobsandstein W,^gs(l-fs),^u=Wasser, Grobsandstein (lehmig bis feinsandig), Schluffstein -^ms(r2,r3(tw),gs(lw,r2-r3)),^u(t,lw),^gs(r3,bei(113),nf?)=Mittelsandstein (kantengerundet, mäßig gerundet (teilweise), grobsandig (lagenweise, kantengerundet bis mäßig gerundet)), Schluffstein (tonig, lagenweise), Grobsandstein (mäßig gerundet, bei 113, Nachfall (fraglich)) -^ksw-^kal(mas,fe,spt,brc,cav2(bei(25.5)),p(unz,tv(40.4))),Rfl("ca"),^if2(knl,bei(31.4,32.8,34.65,35.8,40.4))=Schwammkalk bis Algenkalk (massig, fest, splittrig, brechend, schwach kavernös (bei 25,5), porös (unten zunehmend, Teufe von 40,4)), Hohlraumfüllung (Kalzit), wenig Flint (knollig, bei 31,4, 32,8, 34,65, 35,8, 40,4) -G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg,mx(voe))=Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis mittelkiesig, mittelsteinig (vereinzelt vorhanden)) -G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg2,mx(voe))=Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis schwach mittelkiesig, mittelsteinig (vereinzelt vorhanden)) +^ms(r2,r3(tw),gs(lw,r2-r3)),^u(t,lw),^gs(r3,bei(113),nf?)=Mittelsandstein (kantengerundet, mäßig gerundet (teilweise), grobsandig (lagenweise, kantengerundet bis mäßig gerundet)), Schluffstein (tonig, lagenweise), Grobsandstein (mäßig gerundet, bei 113, Nachfall (fraglich)) +^ksw-^kal(mas,fe,spt,brc,cav2(bei(25.5)),p(unz,tv(40.4))),Rfl("ca"),^if2(knl,bei(31.4,32.8,34.65,35.8,40.4))=Schwammkalk bis Algenkalk (massig, fest, splittrig, brechend, schwach kavernös (bei 25,5), porös (unten zunehmend, Teufe von 40,4)), Hohlraumfüllung (Kalzit), wenig Flint (knollig, bei 31,4, 32,8, 34,65, 35,8, 40,4) +G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg,mx(voe))=Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis mittelkiesig, mittelsteinig (vereinzelt vorhanden)) +G(fg-gg,ms-gs,mats,mata,grs(tw)),fX-mX(mata),mS(fs,grs,fg-mg2,mx(voe))=Kies [gerundet] (feinkiesig bis grobkiesig, mittelsandig bis grobsandig, Schwarzwaldmaterial, alpines Material, grusig (teilweise)), Feinsteinstücke [2,0-6,3 mm] bis Mittelsteinstücke [6,3-20 mm] (alpines Material), Mittelsand [0,2-0,63 mm] (feinsandig, grusig, feinkiesig bis schwach mittelkiesig, mittelsteinig (vereinzelt vorhanden)) U(hz(res),H(res),zg1)=Schluff (Holzreste (Reste), Torf (Reste), sehr schwach zersetzt) (S-G)(u,t,pf(zg,vw))=(Sand [allgemein] bis Kies [gerundet]) (schluffig, tonig, Pflanzenreste (zersetzt, verwittert)) -U(ms2,x(+Gr(gro(0.005))))=Schluff (schwach mittelsandig, steinig (Granit (groß 0,005))) +U(ms2,x(+Gr(gro(0.005))))=Schluff (schwach mittelsandig, steinig (Granit (groß 0,005))) (^u(fs)-^fs(u)),^d(u,"ba")=(Schluffstein (feinsandig) bis Feinsandstein (schluffig)), Dolomitstein (schluffig, Baryt) (fG-gG)(x)=(Feinkies [2,0-6,3 mm] bis Grobkies [20-63 mm]) (steinig) (^u(t,fs(tw)),^gs,^fs,^d(s,ikl))(wl)=(Schluffstein (tonig, feinsandig (teilweise)), Grobsandstein, Feinsandstein, Dolomitstein (sandig, intraklastisch)) (wechsellagernd) (U,fS)(ms2)=(Schluff, Feinsand [0,063-0,2 mm]) (schwach mittelsandig) -(^k(mas,fla,pof,bel)),(fls(rgu))=(Kalkstein (massig, flaserig, Porifera, Belemniten)), (Flasern (unregelmäßig)) +(^k(mas,fla,pof,bel)),(fls(rgu))=(Kalkstein (massig, flaserig, Porifera, Belemniten)), (Flasern (unregelmäßig)) "ca"=Kalzit ca=Calamiten (gG-mG-fG)(gs-fs)=(Grobkies [20-63 mm] bis Mittelkies [6,3-20 mm] bis Feinkies [2,0-6,3 mm]) (grobsandig bis feinsandig) diff --git a/src/main/resources/zusatztest.properties b/src/main/resources/zusatztest.properties index 1dfd581..ad7cace 100644 --- a/src/main/resources/zusatztest.properties +++ b/src/main/resources/zusatztest.properties @@ -1,2 +1,2 @@ -AS=Sattelfläche +AS=Sattelfläche gwt(3.5,28.03.2001)=gwt (3,5, 28,03,2001) diff --git a/src/test/java/org/sep3tools/LaunchTest.java b/src/test/java/org/sep3tools/LaunchTest.java index 8762285..aadbb8e 100644 --- a/src/test/java/org/sep3tools/LaunchTest.java +++ b/src/test/java/org/sep3tools/LaunchTest.java @@ -13,7 +13,7 @@ public class LaunchTest { @Test public void verifyThatRockNameTextIsReturned() { String sep3String = "^ms(r2,r3(tw),gs(lw,r2-r3)),^u(t,lw),^gs(r3,bei(113),nf?)"; - String parsed = Launch.S3_AsText(sep3String); + String parsed = Launch.convertS3ToText(sep3String); assertThat(parsed, CoreMatchers .is("Mittelsandstein (kantengerundet, mäßig gerundet (teilweise), grobsandig (lagenweise, kantengerundet bis mäßig gerundet)), Schluffstein (tonig, lagenweise), Grobsandstein (mäßig gerundet, bei 113, Nachfall (fraglich))")); diff --git a/src/test/java/org/sep3tools/ParserTest.java b/src/test/java/org/sep3tools/ParserTest.java index 70efc55..0a20295 100644 --- a/src/test/java/org/sep3tools/ParserTest.java +++ b/src/test/java/org/sep3tools/ParserTest.java @@ -1,7 +1,9 @@ package org.sep3tools; +import static org.hamcrest.CoreMatchers.is; +import static org.hamcrest.CoreMatchers.not; +import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.CoreMatchers.*; import org.antlr.v4.runtime.CommonTokenStream; import org.antlr.v4.runtime.CharStream; diff --git a/src/test/java/org/sep3tools/SepExamplesTest.java b/src/test/java/org/sep3tools/SepExamplesTest.java index cf71422..0e83846 100644 --- a/src/test/java/org/sep3tools/SepExamplesTest.java +++ b/src/test/java/org/sep3tools/SepExamplesTest.java @@ -20,7 +20,10 @@ import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; +import java.io.InputStream; +import java.io.InputStreamReader; import java.io.IOException; +import java.io.BufferedReader; import java.util.Enumeration; import java.util.Properties; @@ -79,27 +82,43 @@ public void verifyFremdDatenfeldExamples() { public void verifySepExamples(String df, String propFile) { JavaConnector.setPropertiesFile(DBPROPFILENAME); JavaConnector.setDf(df); - try { - File file = new File(propFile); - FileInputStream fileInput = new FileInputStream(file); - Properties properties = new Properties(); - properties.load(fileInput); - fileInput.close(); - - Enumeration enuKeys = properties.keys(); - while (enuKeys.hasMoreElements()) { - String sep3String = (String) enuKeys.nextElement(); - String expectedTranslation = properties.getProperty(sep3String); - String translation = Launch.S3_AsText(sep3String); - assertThat(translation, CoreMatchers.is(expectedTranslation)); - } + Properties properties = loadPropertiesFromFile(propFile, "="); + + Enumeration enuKeys = properties.keys(); + while (enuKeys.hasMoreElements()) { + String sep3String = (String) enuKeys.nextElement(); + String expectedTranslation = properties.getProperty(sep3String); + String translation = Launch.convertS3ToText(sep3String); + assertThat(translation, CoreMatchers.is(expectedTranslation)); } - catch (FileNotFoundException e) { - e.printStackTrace(); + } + + private static Properties loadPropertiesFromFile(String filePath, String delimiter) { + Properties properties = new Properties(); + + try (InputStream input = new FileInputStream(filePath); + BufferedReader reader = new BufferedReader(new InputStreamReader(input))) { + + String line; + while ((line = reader.readLine()) != null) { + // Split the line using the custom delimiter + String[] keyValue = line.split(delimiter, 2); + + // Check if the line has a valid key-value pair + if (keyValue.length == 2) { + String key = keyValue[0].trim(); + String value = keyValue[1].trim(); + + // Add the key-value pair to the properties + properties.setProperty(key, value); + } + } } catch (IOException e) { e.printStackTrace(); } + + return properties; } }