
de.gwdg.metadataqa.marc.cli.PairGenerator Maven / Gradle / Ivy
package de.gwdg.metadataqa.marc.cli;
import de.gwdg.metadataqa.marc.Utils;
import java.io.BufferedWriter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Stream;
import static de.gwdg.metadataqa.marc.Utils.createRow;
import static de.gwdg.metadataqa.marc.Utils.createRowWithSep;
public class PairGenerator {
private static final Logger logger = Logger.getLogger(NetworkAnalysis.class.getCanonicalName());
private String outputDir;
private final int groupLimit;
private boolean asBase36 = false;
private BufferedWriter pairWriter;
private BufferedWriter nodeWriter;
public PairGenerator(String outputDir, int groupLimit, boolean asBase36) {
this.asBase36 = asBase36;
this.outputDir = outputDir;
this.groupLimit = groupLimit;
}
protected void generatePairs() {
logger.info("pairIds");
createPairs("");
Path inputPath = Paths.get(outputDir,"network-by-concepts-tags.csv");
try (Stream stream = Files.lines(Paths.get(inputPath.toString()))) {
stream.forEach(
line -> {
String[] parts = line.split(",");
if (!parts[0].equals("tag")) {
logger.info(parts[0]);
createPairs(parts[0]);
}
}
);
} catch (IOException e) {
logger.log(Level.SEVERE, "generatePairs", e);
}
}
private void createPairs(String tag) {
if (!tag.equals(""))
tag = "-" + tag;
initializePairWriter("network-pairs" + tag + ".csv");
initializeNodeWriter("network-nodes" + tag + ".csv");
processConcepts( "network-by-concepts" + tag + ".csv");
try {
pairWriter.close();
} catch (IOException e) {
logger.log(Level.SEVERE, "createPairs", e);
}
try {
nodeWriter.close();
} catch (IOException e) {
logger.log(Level.SEVERE, "createPairs", e);
}
}
private void initializePairWriter(String fileName) {
Path outputPath = Paths.get(outputDir, fileName);
try {
pairWriter = Files.newBufferedWriter(outputPath);
if (asBase36)
pairWriter.write(createRow("id1", "id2"));
} catch (IOException e) {
logger.log(Level.SEVERE, "initializePairWriter", e);
}
}
private void initializeNodeWriter(String fileName) {
Path nodePath = Paths.get(outputDir, fileName);
try {
nodeWriter = Files.newBufferedWriter(nodePath);
if (asBase36)
nodeWriter.write(createRow("id1", "id2"));
} catch (IOException e) {
logger.log(Level.SEVERE, "initializeNodeWriter", e);
}
}
private void processConcepts(String fileName) {
Map
© 2015 - 2025 Weber Informatics LLC | Privacy Policy