CSVWriter problemen #101

Closed
opened 2017-01-15 11:15:05 +00:00 by awaly · 2 comments
awaly commented 2017-01-15 11:15:05 +00:00 (Migrated from gitlab.awaly.nl)

Created by: shyzus

Ik heb deze dependency toegevoegd:
<!102.4

Ik heb dus ook een CSVService aangemaakt in mijn branche CSVWriter, deze service heeft op het moment 3 methods die ik uiteindelijk verklein tot 1.

  1. export(), line: 43-50. Geeft een acces denied error terug van de DB.
public void export() {
    //Geeft Acces Denied error
    database.executeQuery("SELECT * FROM request "
            + "INTO OUTFILE 'requests.csv' "
            + "FIELDS TERMINATED BY ','"
            + "ENCLOSED BY '/' "
            + "LINES TERMINATED BY '\\n';");
}
  1. writeToCSVLuggage, line: 52-108, volgens mij crasht ie omdat er nullen zijn in de luggage tabel.
public void writeToCSVLuggage(String fileName, String variable) {
    //Crasht vanwege nullen in de db
    LuggageService luggageService = LuggageService.getInstance();
    List<Luggage> luggageList = new ArrayList();
    luggageList.addAll(luggageService.getAllLuggage());

    FileWriter fileWriter = null;
    CSVPrinter csvFilePrinter = null;
    List<String> fileHeaders = null;

    try {
        fileHeaders = database.getColumns(database.executeQuery("SELECT * FROM luggage;"));
    } catch (SQLException ex) {
        Logger.getLogger(CSVService.class.getName()).log(Level.SEVERE, null, ex);
    }

    CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR);
    try {
        fileWriter = new FileWriter(fileName);
        csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat);
        csvFilePrinter.printRecord(fileHeaders);

        for (Luggage luggage : luggageList) {
            List luggageDataRecord = new ArrayList();
            luggageDataRecord.add(luggage.getAirportId());
            luggageDataRecord.add(luggage.getBrand());
            luggageDataRecord.add(luggage.getCharacteristics());
            luggageDataRecord.add(luggage.getColor());
            luggageDataRecord.add(luggage.getCreateDate().toString());
            luggageDataRecord.add(luggage.getDestination());
            luggageDataRecord.add(String.valueOf(luggage.getEmployeeId()));
            luggageDataRecord.add(luggage.getFlightNumber());
            luggageDataRecord.add(luggage.getLabelNumber());
            luggageDataRecord.add(String.valueOf(luggage.getLuggageId()));
            luggageDataRecord.add(luggage.getStatus().getStatusString());
            luggageDataRecord.add(String.valueOf(luggage.getTravelerId()));
            luggageDataRecord.add(luggage.getType());
            luggageDataRecord.add(String.valueOf(luggage.getWeight()));
            csvFilePrinter.printRecord(luggageDataRecord);
        }
        System.out.println("CSV File was created succesfully!104. writeToCSVRequest, line: 110-156. doet hezelfde als de 2de methode maar de request tabel is niet leeg maar hij geeft me hier een null pointer exception bij het ophalen van de kolomnamen van de tabel.
public void writeToCSVRequest(String fileName, String variabel) {
    //Geeft nullpointer bij het line 121.
    RequestService requestService = RequestService.getInstance();
    List<LuggageRequest> requestList = new ArrayList();
    requestList.addAll(requestService.getLuggageRequests());

    FileWriter fileWriter = null;
    CSVPrinter csvFilePrinter = null;
    List<String> fileHeaders = null;

    try {
        fileHeaders = database.getColumns(database.executeQuery("SELECT * FROM request;"));
    } catch (SQLException ex) {
        Logger.getLogger(CSVService.class.getName()).log(Level.SEVERE, null, ex);
    }

    CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR);
    try {
        fileWriter = new FileWriter(fileName);
        csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat);
        csvFilePrinter.printRecord(fileHeaders);

        for (LuggageRequest request : requestList) {
            List requestDataRecord = new ArrayList();
            requestDataRecord.add(String.valueOf(request.getLuggageID()));
            requestDataRecord.add(String.valueOf(request.getRequestDate()));
            requestDataRecord.add(String.valueOf(request.getRequestId()));
            requestDataRecord.add(request.getStatus().getStatusString());
            requestDataRecord.add(String.valueOf(request.getTravelerdId()));
            csvFilePrinter.printRecord(requestDataRecord);
        }
        System.out.println("CSV File was created succesfully!440-351
public List<String> getColumns(ResultSet rs) throws SQLException {
    List<String> columnNames = null;
    ResultSetMetaData rsmd = rs.getMetaData();
    int columnCount = rsmd.getColumnCount();
    
    for (int i = 1; i < columnCount; i++) {
        columnNames.add(rsmd.getColumnName(i));
    }
    
    return columnNames;
}

Komt op neer ik moet dus een van de drie methodes gebruiken of de CSVWriter van hva gebruiken die heb ik ook beschikbaar als jar en source deze is in drive en VLO beschikbaar:

csvwriter.zip

*Created by: shyzus* Ik heb deze dependency toegevoegd:<code> <!102.4</version> </dependency> </code> Ik heb dus ook een CSVService aangemaakt in mijn branche CSVWriter, deze service heeft op het moment 3 methods die ik uiteindelijk verklein tot 1. 1. export(), line: 43-50. Geeft een acces denied error terug van de DB. <code> public void export() { //Geeft Acces Denied error database.executeQuery("SELECT * FROM request " + "INTO OUTFILE 'requests.csv' " + "FIELDS TERMINATED BY ','" + "ENCLOSED BY '/' " + "LINES TERMINATED BY '\\n';"); } </code> 2. writeToCSVLuggage, line: 52-108, volgens mij crasht ie omdat er nullen zijn in de luggage tabel. <code> public void writeToCSVLuggage(String fileName, String variable) { //Crasht vanwege nullen in de db LuggageService luggageService = LuggageService.getInstance(); List<Luggage> luggageList = new ArrayList(); luggageList.addAll(luggageService.getAllLuggage()); FileWriter fileWriter = null; CSVPrinter csvFilePrinter = null; List<String> fileHeaders = null; try { fileHeaders = database.getColumns(database.executeQuery("SELECT * FROM luggage;")); } catch (SQLException ex) { Logger.getLogger(CSVService.class.getName()).log(Level.SEVERE, null, ex); } CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR); try { fileWriter = new FileWriter(fileName); csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat); csvFilePrinter.printRecord(fileHeaders); for (Luggage luggage : luggageList) { List luggageDataRecord = new ArrayList(); luggageDataRecord.add(luggage.getAirportId()); luggageDataRecord.add(luggage.getBrand()); luggageDataRecord.add(luggage.getCharacteristics()); luggageDataRecord.add(luggage.getColor()); luggageDataRecord.add(luggage.getCreateDate().toString()); luggageDataRecord.add(luggage.getDestination()); luggageDataRecord.add(String.valueOf(luggage.getEmployeeId())); luggageDataRecord.add(luggage.getFlightNumber()); luggageDataRecord.add(luggage.getLabelNumber()); luggageDataRecord.add(String.valueOf(luggage.getLuggageId())); luggageDataRecord.add(luggage.getStatus().getStatusString()); luggageDataRecord.add(String.valueOf(luggage.getTravelerId())); luggageDataRecord.add(luggage.getType()); luggageDataRecord.add(String.valueOf(luggage.getWeight())); csvFilePrinter.printRecord(luggageDataRecord); } System.out.println("CSV File was created succesfully!104. writeToCSVRequest, line: 110-156. doet hezelfde als de 2de methode maar de request tabel is niet leeg maar hij geeft me hier een null pointer exception bij het ophalen van de kolomnamen van de tabel. <code> public void writeToCSVRequest(String fileName, String variabel) { //Geeft nullpointer bij het line 121. RequestService requestService = RequestService.getInstance(); List<LuggageRequest> requestList = new ArrayList(); requestList.addAll(requestService.getLuggageRequests()); FileWriter fileWriter = null; CSVPrinter csvFilePrinter = null; List<String> fileHeaders = null; try { fileHeaders = database.getColumns(database.executeQuery("SELECT * FROM request;")); } catch (SQLException ex) { Logger.getLogger(CSVService.class.getName()).log(Level.SEVERE, null, ex); } CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(NEW_LINE_SEPARATOR); try { fileWriter = new FileWriter(fileName); csvFilePrinter = new CSVPrinter(fileWriter, csvFileFormat); csvFilePrinter.printRecord(fileHeaders); for (LuggageRequest request : requestList) { List requestDataRecord = new ArrayList(); requestDataRecord.add(String.valueOf(request.getLuggageID())); requestDataRecord.add(String.valueOf(request.getRequestDate())); requestDataRecord.add(String.valueOf(request.getRequestId())); requestDataRecord.add(request.getStatus().getStatusString()); requestDataRecord.add(String.valueOf(request.getTravelerdId())); csvFilePrinter.printRecord(requestDataRecord); } System.out.println("CSV File was created succesfully!440-351 <code> public List<String> getColumns(ResultSet rs) throws SQLException { List<String> columnNames = null; ResultSetMetaData rsmd = rs.getMetaData(); int columnCount = rsmd.getColumnCount(); for (int i = 1; i < columnCount; i++) { columnNames.add(rsmd.getColumnName(i)); } return columnNames; } </code> Komt op neer ik moet dus een van de drie methodes gebruiken of de CSVWriter van hva gebruiken die heb ik ook beschikbaar als jar en source deze is in drive en VLO beschikbaar: [csvwriter.zip](https://github.com/Camphul/FYSApp/files/706554/csvwriter.zip)
awaly commented 2017-01-15 11:30:15 +00:00 (Migrated from gitlab.awaly.nl)
  1. Waarom export je via SQL? Hoezo niet een DBTable verkrijgen en die dan exporteren naar CSV? Dat is veel veiliger en dan zie je ook nog eens de column names(die moet je ook zien). Je krijgt deze error ook omdat het account fys niet alle permissies krijgt(dit heeft redenen, ik wil bijv niet mijn site's db openstellen lmao)

  2. Je eigen methode bevat een null, dus niet de column names. En aub geen throws gebruiken. Zet alles in je eigen try-catch block. Je lijst columnNames is null, voeg = new ArrayList() toe.

By Luca Camphuisen on 2017-01-15T12:46:46 (imported from GitLab)

1. Waarom export je via SQL? Hoezo niet een DBTable verkrijgen en die dan exporteren naar CSV? Dat is veel veiliger en dan zie je ook nog eens de column names(die moet je ook zien). Je krijgt deze error ook omdat het account fys niet alle permissies krijgt(dit heeft redenen, ik wil bijv niet mijn site's db openstellen lmao) 2. Je eigen methode bevat een null, dus niet de column names. En aub geen throws gebruiken. Zet alles in je eigen try-catch block. Je lijst columnNames is null, voeg = new ArrayList() toe. *By Luca Camphuisen on 2017-01-15T12:46:46 (imported from GitLab)*
awaly commented 2017-01-15 11:34:10 +00:00 (Migrated from gitlab.awaly.nl)

Verder kan je deze pseudocode ook gebruiken als je een lijst van column names wilt en al een DBTable hebt:

DBTable table = databse.selectAll("request");
List<String> columnNames = new ArrayList(table.getColumns().keySet());

By Luca Camphuisen on 2017-01-15T12:34:10 (imported from GitLab)

Verder kan je deze pseudocode ook gebruiken als je een lijst van column names wilt en al een DBTable hebt: ```java DBTable table = databse.selectAll("request"); List<String> columnNames = new ArrayList(table.getColumns().keySet()); ``` *By Luca Camphuisen on 2017-01-15T12:34:10 (imported from GitLab)*
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
HvA/fysapp#101
No description provided.