RandomSec/src/main/java/com/metaweb/gridworks/importers/MarcImporter.java
Stefano Mazzocchi ea459aed07 Applied a bunch of patches from Tom Morris (Issue 25, 26 and 27)
- make java6 dependency explicit in eclipse project files
- avoid using NotImplementException especially the sun.* one
- avoid using internal sun signal handling and rely on standard java.* APIs
 (I tested this one and it seems to be working fine)


git-svn-id: http://google-refine.googlecode.com/svn/trunk@756 7d457c2a-affb-35e4-300a-418c747d4874
2010-05-13 21:02:19 +00:00

79 lines
2.3 KiB
Java

package com.metaweb.gridworks.importers;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.Reader;
import java.util.Properties;
import org.marc4j.MarcPermissiveStreamReader;
import org.marc4j.MarcWriter;
import org.marc4j.MarcXmlWriter;
import org.marc4j.marc.Record;
import com.metaweb.gridworks.model.Project;
public class MarcImporter implements Importer {
public boolean takesReader() {
return false;
}
public void read(Reader reader, Project project, Properties options)
throws Exception {
throw new UnsupportedOperationException();
}
public void read(
InputStream inputStream,
Project project,
Properties options
) throws Exception {
int limit = ImporterUtilities.getIntegerOption("limit",options,-1);
int skip = ImporterUtilities.getIntegerOption("skip",options,0);
File tempFile = File.createTempFile("gridworks-import-", ".marc.xml");
try {
OutputStream os = new FileOutputStream(tempFile);
try {
MarcPermissiveStreamReader reader = new MarcPermissiveStreamReader(
inputStream,
true,
true
);
MarcWriter writer = new MarcXmlWriter(os, true);
int count = 0;
while (reader.hasNext()) {
Record record = reader.next();
if (skip <= 0) {
if (limit == -1 || count < limit) {
writer.write(record);
count++;
} else {
break;
}
} else {
skip--;
}
}
writer.close();
} finally {
os.close();
}
InputStream is = new FileInputStream(tempFile);
try {
new XmlImporter().read(is, project, options);
} finally {
is.close();
}
} finally {
tempFile.delete();
}
}
}