summaryrefslogtreecommitdiff
blob: 29e74cacf94900327e0c2b767deb39c026073f9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
--- src/de/jost_net/OBanToo/Dtaus/DtausDateiParser.java	2008-07-09 15:02:58.000000000 +0200
+++ DtausDateiParser.java	2010-12-28 15:45:29.907892004 +0100
@@ -1,7 +1,7 @@
 /*
  * $Source: /cvsroot/obantoo/obantoo/src/de/jost_net/OBanToo/Dtaus/DtausDateiParser.java,v $
- * $Revision: 1.8 $
- * $Date: 2008/02/17 08:30:46 $
+ * $Revision: 1.10 $
+ * $Date: 2008/08/23 12:18:30 $
  * $Author: jost $
  *
  * Copyright 2006 by Heiner Jostkleigrewe
@@ -24,7 +24,8 @@
  * </p>
  * <p>
  * Dem Parser kann �ber einen speziellen Konstruktor mitgeteilt werden, wie
- * fehlertolerant er sein soll.
+ * fehlertolerant er sein soll. Standardm�ssig wird das Encoding ISO-8859-1
+ * verwendet. In einem Konstruktor kann ein anderes Encoding vorgegeben werden.
  * <ul>
  * <li>SPEZIFIKATIONSKONFORM - entsprechend der DTAUS-Spezifikation wird ohne
  * Fehlertoleranz gearbeitet.</li>
@@ -81,6 +82,8 @@
  */
 public class DtausDateiParser
 {
+  private String encoding = "ISO-8859-1";
+
   private InputStream dtaus;
 
   private ASatz asatz = null;
@@ -116,6 +119,13 @@
     this(new BufferedInputStream(new FileInputStream(filename)), toleranz);
   }
 
+  public DtausDateiParser(String filename, int toleranz, String encoding)
+      throws IOException, DtausException
+  {
+    this(new BufferedInputStream(new FileInputStream(filename)), toleranz,
+        encoding);
+  }
+
   public DtausDateiParser(InputStream is) throws IOException, DtausException
   {
     this(is, SPEZIFIKATIONSKONFORM);
@@ -124,7 +134,18 @@
   public DtausDateiParser(InputStream is, int toleranz) throws IOException,
       DtausException
   {
+    this(is, toleranz, null);
+  }
+
+  public DtausDateiParser(InputStream is, int toleranz, String encoding)
+      throws IOException, DtausException
+  {
     this.toleranz = toleranz;
+    if (encoding != null)
+    {
+      this.encoding = encoding;
+    }
+
     logischeDateien = new Vector();
     dtaus = is;
     while (is.available() > 0)
@@ -201,13 +222,13 @@
   {
     byte[] inchar = new byte[4];
     dtaus.read(inchar);
-    String satzlaenge = new String(inchar);
+    String satzlaenge = new String(inchar, this.encoding);
     // Lese in der Satzl�nge. Die Satzl�nge ist um 4 Bytes zu verringern, da
     // diese
     // Bytes bereits gelesen wurden.
     inchar = new byte[getSatzlaenge(satzlaenge) - 4];
     dtaus.read(inchar);
-    return satzlaenge + new String(inchar);
+    return satzlaenge + new String(inchar, this.encoding);
   }
 
   /**
@@ -262,15 +283,17 @@
   public static void main(String[] args)
   {
     int tol = 0;
-    if (args.length < 1 || args.length > 2)
+    String encoding = null;
+    if (args.length < 1 || args.length > 3)
     {
-      System.err.println("Argumente f�r den Aufruf: dateiname [toleranz]\n"
-          + "toleranz = 0 Spezifikationskonform\n"
-          + "toleranz = 1 DOS-Umlaute umwandeln\n"
-          + "toleranz = 2 Zeichencode 00 in Space umwandeln");
+      System.err
+          .println("Argumente f�r den Aufruf: dateiname [toleranz] [encoding]\n"
+              + "toleranz = 0 Spezifikationskonform\n"
+              + "toleranz = 1 DOS-Umlaute umwandeln\n"
+              + "toleranz = 2 Zeichencode 00 in Space umwandeln");
       System.exit(1);
     }
-    if (args.length == 2)
+    if (args.length >= 2)
     {
       try
       {
@@ -282,9 +305,21 @@
         System.exit(1);
       }
     }
+    if (args.length == 3)
+    {
+      encoding = args[2];
+    }
     try
     {
-      DtausDateiParser p = new DtausDateiParser(args[0], tol);
+      DtausDateiParser p;
+      if (encoding == null)
+      {
+        p = new DtausDateiParser(args[0], tol);
+      }
+      else
+      {
+        p = new DtausDateiParser(args[0], tol, encoding);
+      }
       System.out.println("Anzahl logischer Dateien: "
           + p.getAnzahlLogischerDateien());
       for (int i = 1; i <= p.getAnzahlLogischerDateien(); i++)
@@ -320,10 +355,13 @@
 }
 /*
  * $Log: DtausDateiParser.java,v $
- * Revision 1.8  2008/02/17 08:30:46  jost
- * Neuer Toleranzlevel
- * Neues Feld5
- * Revision 1.7 2007/02/14 14:42:54 jost javadoc
+ * Revision 1.10  2008/08/23 12:18:30  jost
+ * Encoding kann als Kommandozeilenparameter an die main-Methode übergeben werden.
+ * Revision 1.9 2008/07/09 19:43:28 jost Patch
+ * von Olaf Willuhn: Standardmässig wird das Encoding ISO-8859-1 verwendet.
+ * Optional kann über zusätzliche Konstruktoren ein anderes Encoding
+ * eingestellt werden. Revision 1.8 2008/02/17 08:30:46 jost Neuer Toleranzlevel
+ * Neues Feld5 Revision 1.7 2007/02/14 14:42:54 jost javadoc
  * 
  * Revision 1.6 2006/10/06 12:47:39 jost Optionale Fehlertoleranz Revision 1.5
  * 2006/06/04 12:23:51 jost Redaktionelle �nderung
@@ -333,5 +371,4 @@
  * Dateien pro physikalischer Datei - interne Umstellung von Reader auf
  * InputStream Revision 1.2 2006/05/25 20:30:40 jost Korrektur Satzl�ngen und
  * Doku Revision 1.1 2006/05/24 16:24:44 jost Prerelease
- * 
  */