Skip to content

Commit

Permalink
0004196: fix deprecated finalize and use try-with-resources
Browse files Browse the repository at this point in the history
  • Loading branch information
erilong committed Sep 12, 2022
1 parent 60e83da commit 4a8741c
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 82 deletions.
Expand Up @@ -340,8 +340,8 @@ public static File createSnapshot(ISymmetricEngine engine, IProgressListener lis
log.warn("Failed to export thread information", e);
}
File logSummaryFile = new File(tmpDir, "log-summary.csv");
try (OutputStream outputStream = new FileOutputStream(logSummaryFile)) {
CsvWriter csvWriter = new CsvWriter(outputStream, ',', Charset.defaultCharset());
try (OutputStream outputStream = new FileOutputStream(logSummaryFile);
CsvWriter csvWriter = new CsvWriter(outputStream, ',', Charset.defaultCharset())) {
csvWriter.setEscapeMode(CsvWriter.ESCAPE_MODE_DOUBLED);
csvWriter.writeRecord(new String[] { "Level", "First Time", "Last Time", "Count", "Message", "Stack Trace" });
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Expand Down Expand Up @@ -476,10 +476,8 @@ protected static void extract(DbExport export, int maxRows, String whereClause,
}

protected static void extractQuery(ISqlTemplate sqlTemplate, String fileName, String sql) {
CsvWriter writer = null;
try {
try (CsvWriter writer = new CsvWriter(fileName)) {
List<Row> rows = sqlTemplate.query(sql);
writer = new CsvWriter(fileName);
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_DOUBLED);
writer.setForceQualifier(true);
boolean isFirstRow = true;
Expand All @@ -498,10 +496,6 @@ protected static void extractQuery(ISqlTemplate sqlTemplate, String fileName, St
}
} catch (Exception e) {
log.warn("Failed to run extract query " + sql, e);
} finally {
if (writer != null) {
writer.close();
}
}
}

Expand Down Expand Up @@ -756,8 +750,8 @@ public static File createThreadsFile(String parent, boolean isFiltered) {

public static File createThreadStatsFile(String parent) {
File file = new File(parent, "threads-stats.csv");
try (OutputStream outputStream = new FileOutputStream(file)) {
CsvWriter csvWriter = new CsvWriter(outputStream, ',', Charset.forName("ISO-8859-1"));
try (OutputStream outputStream = new FileOutputStream(file);
CsvWriter csvWriter = new CsvWriter(outputStream, ',', Charset.forName("ISO-8859-1"))) {
csvWriter.setEscapeMode(CsvWriter.ESCAPE_MODE_DOUBLED);
String[] heading = { "Thread", "Allocated Memory (Bytes)", "CPU Time (Seconds)" };
csvWriter.writeRecord(heading);
Expand Down Expand Up @@ -797,8 +791,8 @@ private static File createTransactionsFile(ISymmetricEngine engine, String paren
MonitorTypeBlock.filterTransactions(transaction, transactionMap, filteredTransactions, dbUser, false, false);
}
File file = new File(parent, "transactions.csv");
try (OutputStream outputStream = new FileOutputStream(file)) {
CsvWriter csvWriter = new CsvWriter(outputStream, ',', Charset.forName("ISO-8859-1"));
try (OutputStream outputStream = new FileOutputStream(file);
CsvWriter csvWriter = new CsvWriter(outputStream, ',', Charset.forName("ISO-8859-1"))) {
csvWriter.setEscapeMode(CsvWriter.ESCAPE_MODE_DOUBLED);
String[] heading = { "ID", "Username", "Remote IP", "Remote Host", "Status", "Reads", "Writes",
"Blocking ID", "Duration", "Text" };
Expand Down Expand Up @@ -845,19 +839,13 @@ public static void outputSymDataForBatchesInError(ISymmetricEngine engine, File
TableConstants.getTableName(tablePrefix, TableConstants.SYM_DATA));
// Write parsed row data to file
String filenameParsed = tmpDir + File.separator + batch.getBatchId() + "_parsed.csv";
CsvWriter writer = null;
try {
writer = new CsvWriter(filenameParsed);
try (CsvWriter writer = new CsvWriter(filenameParsed)) {
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_DOUBLED);
writer.writeRecord(data.getTriggerHistory().getParsedColumnNames());
writer.writeRecord(data.toParsedRowData());
writer.writeRecord(data.toParsedOldData());
} catch (Exception e) {
log.warn("Failed to write parsed row data from sym_data to file " + filenameParsed, e);
} finally {
if (writer != null) {
writer.close();
}
}
} else {
log.warn("Could not find data ID: " + batch.getFailedDataId() + " for batch ID: " + batch.getBatchId() + " in error");
Expand Down
Expand Up @@ -331,8 +331,7 @@ protected String[] parseColumnNames(String argColumnNames) {
if (argColumnNames.indexOf('"') == -1) {
return argColumnNames.split(",");
}
try {
CsvReader reader = new CsvReader(new StringReader(argColumnNames), ',');
try (CsvReader reader = new CsvReader(new StringReader(argColumnNames), ',')) {
if (reader.readRecord()) {
return reader.getValues();
} else {
Expand Down
Expand Up @@ -36,7 +36,7 @@
/**
* A stream based parser for parsing delimited text data from a file or a stream.
*/
public class CsvReader {
public class CsvReader implements AutoCloseable {
private static int MAX_BUFFER_EXPANSION_SIZE = 1048576;
private Reader inputStream = null;
private String fileName = null;
Expand Down Expand Up @@ -1298,11 +1298,6 @@ private void checkClosed() throws IOException {
}
}

@Override
protected void finalize() {
close(false);
}

private static class ComplexEscape {
private static final int UNICODE = 1;
private static final int OCTAL = 2;
Expand Down
Expand Up @@ -31,7 +31,7 @@
/**
* A stream based writer for writing delimited text data to a file or a stream.
*/
public class CsvWriter {
public class CsvWriter implements AutoCloseable {
private PrintWriter outputStream = null;
private String fileName = null;
private boolean firstColumn = true;
Expand Down Expand Up @@ -460,11 +460,6 @@ private void checkClosed() throws IOException {
}
}

@Override
protected void finalize() {
close(false);
}

private static class Letters {
public static final char LF = '\n';
public static final char CR = '\r';
Expand Down
Expand Up @@ -57,8 +57,7 @@ public static CsvReader getCsvReaderDquote(Reader reader) {
public static String[] tokenizeCsvData(String csvData) {
String[] tokens = null;
if (csvData != null) {
CsvReader csvReader = getCsvReader(new StringReader(csvData));
try {
try (StringReader sr = new StringReader(csvData); CsvReader csvReader = getCsvReader(sr)) {
if (csvReader.readRecord()) {
tokens = csvReader.getValues();
}
Expand All @@ -72,50 +71,47 @@ public static String[] tokenizeCsvData(String csvData) {
* This escapes backslashes but doesn't wrap the data in a text qualifier.
*/
public static String escapeCsvData(String data) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',');
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_BACKSLASH);
try {
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',')) {
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_BACKSLASH);
writer.write(data);
writer.close();
out.close();
writer.flush();
return out.toString();
} catch (IOException e) {
return data;
}
return out.toString();
}

public static String escapeAndQuoteCsvData(String data) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',');
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_BACKSLASH);
writer.setTextQualifier('"');
writer.setUseTextQualifier(true);
writer.setForceQualifier(false);
try {
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',')) {
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_BACKSLASH);
writer.setTextQualifier('"');
writer.setUseTextQualifier(true);
writer.setForceQualifier(false);
writer.write(data, true);
writer.close();
out.close();
writer.flush();
return out.toString();
} catch (IOException e) {
return data;
}
return out.toString();
}

public static String escapeCsvData(String[] data) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',');
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_BACKSLASH);
writer.setTextQualifier('\"');
writer.setUseTextQualifier(true);
writer.setForceQualifier(true);
for (String s : data) {
try {
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',')) {
writer.setEscapeMode(CsvWriter.ESCAPE_MODE_BACKSLASH);
writer.setTextQualifier('\"');
writer.setUseTextQualifier(true);
writer.setForceQualifier(true);
for (String s : data) {
writer.write(s, true);
} catch (IOException e) {
throw new IoException(e);
}
writer.flush();
return out.toString();
} catch (IOException e) {
throw new IoException(e);
}
writer.close();
return out.toString();
}

public static String escapeCsvData(String[] data, char recordDelimiter, char textQualifier) {
Expand All @@ -127,27 +123,26 @@ public static String escapeCsvData(String[] data, char recordDelimiter, char tex
}

public static String escapeCsvData(String[] data, char recordDelimiter, char textQualifier, int escapeMode, String nullString) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',');
writer.setEscapeMode(escapeMode);
if (recordDelimiter != '\0') {
writer.setRecordDelimiter(recordDelimiter);
}
if (textQualifier != '\0') {
writer.setTextQualifier(textQualifier);
writer.setUseTextQualifier(true);
writer.setForceQualifier(true);
}
if (nullString != null) {
writer.setNullString(nullString);
}
try {
try (ByteArrayOutputStream out = new ByteArrayOutputStream();
CsvWriter writer = new CsvWriter(new OutputStreamWriter(out), ',')) {
writer.setEscapeMode(escapeMode);
if (recordDelimiter != '\0') {
writer.setRecordDelimiter(recordDelimiter);
}
if (textQualifier != '\0') {
writer.setTextQualifier(textQualifier);
writer.setUseTextQualifier(true);
writer.setForceQualifier(true);
}
if (nullString != null) {
writer.setNullString(nullString);
}
writer.writeRecord(data, true);
writer.flush();
return out.toString();
} catch (IOException e) {
throw new IoException(e);
}
writer.close();
return out.toString();
}

public static int write(Writer writer, String... data) {
Expand Down

0 comments on commit 4a8741c

Please sign in to comment.