/*
* The Kuali Financial System, a comprehensive financial management system for higher education.
*
* Copyright 2005-2014 The Kuali Foundation
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.kuali.kfs.gl.batch.service.impl;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.kuali.kfs.gl.batch.service.BatchSortService;
/**
* This class...
*/
public class BatchSortServiceImpl implements BatchSortService {
private static org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(BatchSortServiceImpl.class);
@Override
public void sortTextFileWithFields(String inputFileName, String outputFileName, Comparator comparator){
FileReader inputFile = null;
PrintStream outputFileStream = null;
try {
inputFile = new FileReader(inputFileName);
outputFileStream = new PrintStream(outputFileName);
}
catch (FileNotFoundException e) {
throw new RuntimeException(e);
}
List<String> lineList = new ArrayList();
BufferedReader inputBufferedReader = new BufferedReader(inputFile);
try {
String currentLine = inputBufferedReader.readLine();
while (currentLine != null) {
lineList.add(currentLine);
}
inputBufferedReader.close();
outputFileStream.close();
} catch (IOException e) {
// FIXME: do whatever should be done here
LOG.error("performDemerger Stopped: " + e.getMessage());
throw new RuntimeException("sortTextFileWithFields() Stopped: " + e.getMessage(), e);
}
Collections.sort(lineList, comparator);
for (String line: lineList){
outputFileStream.printf("%s\n", line);
}
outputFileStream.close();
}
}