Changeset 7030


Ignore:
Timestamp:
06/30/16 16:53:46 (8 years ago)
Author:
Leif-Jöran
Message:

Adding ADV segments to export formats csv and xls.

Location:
SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/search
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/search/Exports.java

    r6123 r7030  
    2323 *
    2424 * @author Yana Panchenko
     25 * @author ljo
    2526 */
    2627public class Exports {
     
    3031        public static String getExportCSV(List<Result> resultsProcessed, String filterLanguage, String separator) {
    3132                boolean noResult = true;
     33                boolean firstRow = true;
    3234                StringBuilder csv = new StringBuilder();
    3335                if (resultsProcessed != null && !resultsProcessed.isEmpty()) {
    34                         String[] headers = new String[]{
    35                                 "LEFT CONTEXT", "KEYWORD", "RIGHT CONTEXT", "PID", "REFERENCE"};
    36                         for (String header : headers) {
    37                                 csv.append("\"");
    38                                 csv.append(header);
    39                                 csv.append("\"");
    40                                 csv.append(separator);
    41                         }
    42                         csv.append("\n");
    43 
    44                         for (Result result : resultsProcessed) {
    45                                 for (Kwic kwic : result.getKwics()) {
    46                                         if (filterLanguage != null && !filterLanguage.equals(kwic.getLanguage())) {
    47                                                 continue;
    48                                         }
     36                    for (Result result : resultsProcessed) {
     37                        if (result.getAdvancedLayers().size() == 0) {
     38                            for (Kwic kwic : result.getKwics()) {
     39                                if (firstRow) {
     40                                    String[] headers = new String[]{
     41                                        "PID", "REFERENCE", "LEFT CONTEXT", "KEYWORD", "RIGHT CONTEXT"};
     42                                    for (String header : headers) {
    4943                                        csv.append("\"");
    50                                         csv.append(escapeQuotes(kwic.getLeft()));
     44                                        csv.append(header);
    5145                                        csv.append("\"");
    5246                                        csv.append(separator);
    53                                         csv.append("\"");
    54                                         csv.append(escapeQuotes(kwic.getKeyword()));
    55                                         csv.append("\"");
    56                                         csv.append(separator);
    57                                         csv.append("\"");
    58                                         csv.append(escapeQuotes(kwic.getRight()));
    59                                         csv.append("\"");
    60                                         csv.append(separator);
    61                                         csv.append("\"");
    62                                         if (kwic.getPid() != null) {
    63                                                 csv.append(escapeQuotes(kwic.getPid()));
    64                                         }
    65                                         csv.append("\"");
    66                                         csv.append(separator);
    67                                         csv.append("\"");
    68                                         if (kwic.getReference() != null) {
    69                                                 csv.append(escapeQuotes(kwic.getReference()));
    70                                         }
    71                                         csv.append("\"");
    72                                         csv.append("\n");
    73                                         noResult = false;
    74                                 }
    75                         }
     47                                    }
     48                                    csv.append("\n");
     49                                    firstRow = false;
     50                                }
     51                                if (filterLanguage != null && !filterLanguage.equals(kwic.getLanguage())) {
     52                                    continue;
     53                                }
     54                                csv.append("\"");
     55                                if (kwic.getPid() != null) {
     56                                    csv.append(escapeQuotes(kwic.getPid()));
     57                                }
     58                                csv.append("\"");
     59                                csv.append(separator);
     60                                csv.append("\"");
     61                                if (kwic.getReference() != null) {
     62                                    csv.append(escapeQuotes(kwic.getReference()));
     63                                }
     64                                csv.append("\"");
     65                                csv.append(separator);
     66                                csv.append("\"");
     67                                csv.append(escapeQuotes(kwic.getLeft()));
     68                                csv.append("\"");
     69                                csv.append(separator);
     70                                csv.append("\"");
     71                                csv.append(escapeQuotes(kwic.getKeyword()));
     72                                csv.append("\"");
     73                                csv.append(separator);
     74                                csv.append("\"");
     75                                csv.append(escapeQuotes(kwic.getRight()));
     76                                csv.append("\"");
     77                                csv.append("\n");
     78                                noResult = false;
     79                            }
     80                        }
     81                        firstRow = true;
     82                        for (AdvancedLayer layer : result.getAdvancedLayers()) {
     83                            if (firstRow) {
     84                                String[] headers = new String[]{
     85                                    "PID", "REFERENCE", "SPANS"};
     86                                for (String header : headers) {
     87                                    csv.append("\"");
     88                                    csv.append(header);
     89                                    csv.append("\"");
     90                                    csv.append(separator);
     91                                }
     92                                csv.append("\n");
     93                                firstRow = false;
     94                            }
     95                            if (filterLanguage != null && !filterLanguage.equals(layer.getLanguage())) {
     96                                continue;
     97                            }
     98                           
     99                            csv.append("\"");
     100                            if (layer.getPid() != null) {
     101                                csv.append(escapeQuotes(layer.getPid()));
     102                            }
     103                            csv.append("\"");
     104                            csv.append(separator);
     105                            csv.append("\"");
     106                            if (layer.getReference() != null) {
     107                                csv.append(escapeQuotes(layer.getReference()));
     108                            }
     109                            csv.append("\"");
     110                            csv.append(separator);
     111                            for (AdvancedLayer.Span span : layer.getSpans()) {
     112                                csv.append("\"");
     113                                csv.append(escapeQuotes(span.getText()));
     114                                csv.append("\"");
     115                                csv.append(separator);
     116                            }
     117                            csv.append("\n");
     118                            noResult = false;
     119                        }
     120                    }
    76121                }
    77122                if (noResult) {
     
    94139        }
    95140
    96         public static byte[] getExportExcel(List<Result> resultsProcessed, String filterLanguage) throws ExportException {
    97                 SXSSFWorkbook workbook = null;
     141    public static byte[] getExportExcel(List<Result> resultsProcessed, String filterLanguage) throws ExportException {
     142            SXSSFWorkbook workbook = null;
    98143                ByteArrayOutputStream excelStream = new ByteArrayOutputStream();
    99144                int rownum = 0;
     145                boolean firstRow = true;
    100146                if (resultsProcessed != null && !resultsProcessed.isEmpty()) {
    101                         try {
    102                                 String[] headers = new String[]{
    103                                         "LEFT CONTEXT", "KEYWORD", "RIGHT CONTEXT", "PID", "REFERENCE"};
    104 
    105                                 workbook = new SXSSFWorkbook();
    106                                 Sheet sheet = workbook.createSheet();
    107 
    108                                 Font boldFont = workbook.createFont();
    109                                 boldFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
    110 
    111                                 // Header
    112                                 CellStyle headerStyle = workbook.createCellStyle();
    113                                 headerStyle.setFont(boldFont);
    114 
    115                                 Row row = sheet.createRow(rownum++);
    116 
    117                                 for (int j = 0; j < headers.length; ++j) {
    118                                         Cell cell = row.createCell(j, Cell.CELL_TYPE_STRING);
     147                    try {
     148                        workbook = new SXSSFWorkbook();
     149                        Sheet sheet = workbook.createSheet();
     150                       
     151                        Font boldFont = workbook.createFont();
     152                        boldFont.setBoldweight(Font.BOLDWEIGHT_BOLD);
     153                       
     154                        // Header
     155                        CellStyle headerStyle = workbook.createCellStyle();
     156                        headerStyle.setFont(boldFont);
     157                       
     158                        Row row = sheet.createRow(rownum++);
     159                       
     160                        Cell cell;
     161                        for (Result result : resultsProcessed) {
     162                            if (result.getAdvancedLayers().size() == 0) {
     163                                for (Kwic kwic : result.getKwics()) {
     164                                    if (firstRow) {
     165                                        String[] headers = new String[]{
     166                                            "PID", "REFERENCE", "LEFT CONTEXT", "KEYWORD", "RIGHT CONTEXT"};
     167                                        for (int j = 0; j < headers.length; ++j) {
     168                                            cell = row.createCell(j, Cell.CELL_TYPE_STRING);
     169                                            cell.setCellValue(headers[j]);
     170                                            cell.setCellStyle(headerStyle);
     171                                        }
     172                                        firstRow = false;
     173                                    }
     174                                    // Body
     175                                   
     176                                    if (filterLanguage != null && !filterLanguage.equals(kwic.getLanguage())) {
     177                                        continue;
     178                                    }
     179                                    row = sheet.createRow(rownum++);
     180                                    cell = row.createCell(0, Cell.CELL_TYPE_STRING);
     181                                    if (kwic.getPid() != null) {
     182                                        cell.setCellValue(kwic.getPid());
     183                                    }
     184                                    cell = row.createCell(1, Cell.CELL_TYPE_STRING);
     185                                    if (kwic.getReference() != null) {
     186                                        cell.setCellValue(kwic.getReference());
     187                                    }
     188                                   
     189                                    cell = row.createCell(2, Cell.CELL_TYPE_STRING);
     190                                    cell.setCellValue(kwic.getLeft());
     191                                    cell = row.createCell(3, Cell.CELL_TYPE_STRING);
     192                                    cell.setCellValue(kwic.getKeyword());
     193                                    cell.setCellStyle(headerStyle);
     194                                    cell = row.createCell(4, Cell.CELL_TYPE_STRING);
     195                                    cell.setCellValue(kwic.getRight());
     196                                }
     197                            }
     198                            firstRow = true;
     199                            for (AdvancedLayer layer : result.getAdvancedLayers()) {
     200                                if (firstRow) {
     201                                    String[] headers = new String[]{
     202                                        "PID", "REFERENCE", "SPANS"};
     203                                    for (int j = 0; j < headers.length; ++j) {
     204                                        cell = row.createCell(j, Cell.CELL_TYPE_STRING);
    119205                                        cell.setCellValue(headers[j]);
    120206                                        cell.setCellStyle(headerStyle);
    121                                 }
    122 
    123                                 // Body
    124                                 Cell cell;
    125                                 for (Result result : resultsProcessed) {
    126                                         for (Kwic kwic : result.getKwics()) {
    127                                                 if (filterLanguage != null && !filterLanguage.equals(kwic.getLanguage())) {
    128                                                         continue;
    129                                                 }
    130                                                 row = sheet.createRow(rownum++);
    131                                                 cell = row.createCell(0, Cell.CELL_TYPE_STRING);
    132                                                 cell.setCellValue(kwic.getLeft());
    133                                                 cell = row.createCell(1, Cell.CELL_TYPE_STRING);
    134                                                 cell.setCellValue(kwic.getKeyword());
    135                                                 cell = row.createCell(2, Cell.CELL_TYPE_STRING);
    136                                                 cell.setCellValue(kwic.getRight());
    137                                                 if (kwic.getPid() != null) {
    138                                                         cell = row.createCell(3, Cell.CELL_TYPE_STRING);
    139                                                         cell.setCellValue(kwic.getPid());
    140                                                 }
    141                                                 if (kwic.getReference() != null) {
    142                                                         cell = row.createCell(3, Cell.CELL_TYPE_STRING);
    143                                                         cell.setCellValue(kwic.getReference());
    144                                                 }
    145                                         }
    146                                 }
    147                                 workbook.write(excelStream);
    148                         } catch (IOException ex) {
    149                                 LOGGER.log(Level.SEVERE, null, ex);
    150                                 throw new ExportException("Exception exporting Excel", ex);
    151                         } finally {
    152                                 if (workbook != null) {
    153                                         workbook.dispose();
    154                                 }
    155                         }
     207                                    }
     208                                    firstRow = false;
     209                                }
     210                               
     211                                if (filterLanguage != null && !filterLanguage.equals(layer.getLanguage())) {
     212                                    continue;
     213                                }
     214                                row = sheet.createRow(rownum++);
     215                                int j = 0;
     216                                cell = row.createCell(j, Cell.CELL_TYPE_STRING);
     217                                if (layer.getPid() != null) {
     218                                    cell.setCellValue(layer.getPid());
     219                                }
     220                                j++;
     221                                cell = row.createCell(j, Cell.CELL_TYPE_STRING);
     222                                if (layer.getReference() != null) {
     223                                    cell.setCellValue(layer.getReference());
     224                                }
     225                                j++;
     226                                for (AdvancedLayer.Span span : layer.getSpans()) {
     227                                    cell = row.createCell(j, Cell.CELL_TYPE_STRING);
     228                                    cell.setCellValue(span.getText());
     229                                    if (span.isHit()) {
     230                                        cell.setCellStyle(headerStyle);
     231                                    }
     232                                    j++;
     233                                }
     234                            }
     235                        }
     236                        workbook.write(excelStream);
     237                    } catch (IOException ex) {
     238                        LOGGER.log(Level.SEVERE, null, ex);
     239                        throw new ExportException("Exception exporting Excel", ex);
     240                    } finally {
     241                        if (workbook != null) {
     242                            workbook.dispose();
     243                        }
     244                    }
    156245                }
    157246                if (rownum <= 1) {
  • SRUAggregator/trunk/src/main/java/eu/clarin/sru/fcs/aggregator/search/Result.java

    r7027 r7030  
     1/**
     2 *
     3 * @license http://www.gnu.org/licenses/gpl-3.0.txt
     4 *  GNU General Public License v3
     5 */
    16package eu.clarin.sru.fcs.aggregator.search;
    27
     
    4449        private List<Kwic> kwics = Collections.synchronizedList(new ArrayList<Kwic>());
    4550
     51        private List<AdvancedLayer> advLayers = Collections.synchronizedList(new ArrayList<AdvancedLayer>());
     52
    4653        public List<Kwic> getKwics() {
    4754                return kwics;
     55        }
     56
     57        public List<AdvancedLayer> getAdvancedLayers() {
     58                return advLayers;
    4859        }
    4960
     
    134145                        } else if (dataview instanceof DataViewAdvanced) {
    135146                                final DataViewAdvanced adv = (DataViewAdvanced) dataview;
    136                                 adv.getLayers();
    137                                 log.debug("DataViewAdvanced: {}", adv.getLayers().get(0).getId());
     147                                for (DataViewAdvanced.Layer layer : adv.getLayers()) {
     148                                    log.debug("DataViewAdvanced layer: {}",                             adv.getUnit(), layer.getId());
     149                                    AdvancedLayer aLayer = new AdvancedLayer(layer, pid, reference);
     150                                    advLayers.add(aLayer);
     151                                }
    138152                        }
    139153                }
Note: See TracChangeset for help on using the changeset viewer.