projects
/
marc4j.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
432a10c
)
Possible to skip bad indicators. Replace control characters with space.
author
Dennis Schafroth
<dennis@indexdata.com>
Wed, 4 Jan 2012 19:14:47 +0000
(20:14 +0100)
committer
Dennis Schafroth
<dennis@indexdata.com>
Wed, 4 Jan 2012 19:14:47 +0000
(20:14 +0100)
src/org/marc4j/MarcStreamReader.java
patch
|
blob
|
history
diff --git
a/src/org/marc4j/MarcStreamReader.java
b/src/org/marc4j/MarcStreamReader.java
index
473450a
..
9b6f637
100644
(file)
--- a/
src/org/marc4j/MarcStreamReader.java
+++ b/
src/org/marc4j/MarcStreamReader.java
@@
-83,6
+83,8
@@
public class MarcStreamReader implements MarcReader {
\r
private CharConverter converterAnsel = null;
\r
\r
\r
private CharConverter converterAnsel = null;
\r
\r
+ private boolean setBadIndicators = true;
\r
+
\r
/**
\r
* Constructs an instance with the specified input stream.
\r
*/
\r
/**
\r
* Constructs an instance with the specified input stream.
\r
*/
\r
@@
-234,7
+236,10
@@
public class MarcStreamReader implements MarcReader {
inputrec.readFully(byteArray);
\r
\r
try {
\r
inputrec.readFully(byteArray);
\r
\r
try {
\r
- record.addVariableField(parseDataField(tags[i], byteArray));
\r
+ DataField dataField = parseDataField(tags[i], byteArray);
\r
+ // dataField could be null if bad indicators
\r
+ if (dataField != null)
\r
+ record.addVariableField(dataField);
\r
} catch (IOException e) {
\r
throw new MarcException(
\r
"error parsing data field for tag: " + tags[i]
\r
} catch (IOException e) {
\r
throw new MarcException(
\r
"error parsing data field for tag: " + tags[i]
\r
@@
-263,9
+268,16
@@
public class MarcStreamReader implements MarcReader {
\r
DataField dataField = factory.newDataField();
\r
dataField.setTag(tag);
\r
\r
DataField dataField = factory.newDataField();
\r
dataField.setTag(tag);
\r
- dataField.setIndicator1(ind1);
\r
- dataField.setIndicator2(ind2);
\r
\r
\r
+ boolean badIndicatorFound = false;
\r
+ if (setBadIndicators || ind1 >= ' ' )
\r
+ dataField.setIndicator1(ind1);
\r
+ else
\r
+ badIndicatorFound = true;
\r
+ if (setBadIndicators || ind2 >= ' ')
\r
+ dataField.setIndicator2(ind2);
\r
+ else
\r
+ badIndicatorFound = true;
\r
int code;
\r
int size;
\r
int readByte;
\r
int code;
\r
int size;
\r
int readByte;
\r
@@
-294,6
+306,9
@@
public class MarcStreamReader implements MarcReader {
break;
\r
}
\r
}
\r
break;
\r
}
\r
}
\r
+ /* Bad Indicators was found, so dropping field */
\r
+ if (badIndicatorFound)
\r
+ return null;
\r
return dataField;
\r
}
\r
\r
return dataField;
\r
}
\r
\r
@@
-406,7
+421,12
@@
public class MarcStreamReader implements MarcReader {
else if (encoding.equals("MARC-8") || encoding.equals("MARC8"))
\r
{
\r
if (converterAnsel == null) converterAnsel = new AnselToUnicode();
\r
else if (encoding.equals("MARC-8") || encoding.equals("MARC8"))
\r
{
\r
if (converterAnsel == null) converterAnsel = new AnselToUnicode();
\r
+
\r
+ for (int index = 0; index < bytes.length; index++)
\r
+ if (bytes[index] < 32)
\r
+ bytes[index] = ' ';
\r
dataElement = converterAnsel.convert(bytes);
\r
dataElement = converterAnsel.convert(bytes);
\r
+ //dataElement = dataElement.replaceAll("\0", " ");
\r
}
\r
else if (encoding.equals("ISO-8859-1") || encoding.equals("ISO8859_1"))
\r
{
\r
}
\r
else if (encoding.equals("ISO-8859-1") || encoding.equals("ISO8859_1"))
\r
{
\r
@@
-419,5
+439,13
@@
public class MarcStreamReader implements MarcReader {
}
\r
return dataElement;
\r
}
\r
}
\r
return dataElement;
\r
}
\r
+
\r
+ public boolean isBadIndicators() {
\r
+ return setBadIndicators;
\r
+ }
\r
+
\r
+ public void setBadIndicators(boolean trueFalse) {
\r
+ this.setBadIndicators = trueFalse;
\r
+ }
\r
\r
}
\ No newline at end of file
\r
}
\ No newline at end of file