List of usage examples for org.apache.commons.csv CSVPrinter close
@Override public void close() throws IOException
From source file:com.siemens.sw360.portal.portlets.admin.UserPortlet.java
public void backUpUsers(ResourceRequest request, ResourceResponse response) throws PortletException, IOException, SystemException, PortalException { List<User> liferayUsers; try {/* w ww . j a v a2 s.c om*/ liferayUsers = UserLocalServiceUtil.getUsers(QueryUtil.ALL_POS, QueryUtil.ALL_POS); } catch (SystemException e) { log.error("Could not get user List from liferay", e); liferayUsers = Collections.emptyList(); } final ByteArrayOutputStream outB = new ByteArrayOutputStream(); Writer out = new BufferedWriter(new OutputStreamWriter(outB)); CSVPrinter csvPrinter = new CSVPrinter(out, CommonUtils.sw360CsvFormat); csvPrinter.printRecord("GivenName", "Lastname", "Email", "Department", "UserGroup", "GID", "isMale", "PasswdHash"); for (User liferayUser : liferayUsers) { String firstName = liferayUser.getFirstName(); String lastName = liferayUser.getLastName(); String emailAddress = liferayUser.getEmailAddress(); List<Organization> organizations = liferayUser.getOrganizations(); String department = ""; if (organizations != null && organizations.size() > 0) { department = organizations.get(0).getName(); } String userGroup = ""; List<Role> roles = liferayUser.getRoles(); List<String> roleNames = new ArrayList<>(); for (Role role : roles) { roleNames.add(role.getName()); } for (UserGroup group : UserGroup.values()) { String roleConstantFromUserGroup = getRoleConstantFromUserGroup(group); if (roleNames.contains(roleConstantFromUserGroup)) { userGroup = group.toString(); break; } } String gid = liferayUser.getOpenId(); boolean isMale = liferayUser.isMale(); String passwordHash = liferayUser.getPassword(); if (isNullOrEmpty(emailAddress) || isNullOrEmpty(department)) continue; csvPrinter.printRecord(firstName, lastName, emailAddress, department, userGroup, gid, isMale, passwordHash); } csvPrinter.flush(); csvPrinter.close(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(outB.toByteArray()); PortletResponseUtil.sendFile(request, response, "Users.csv", byteArrayInputStream, "text/csv"); }
From source file:GUI.MainWindow.java
/** * Writes a row of data to a CSV file. For use with exporting CVE data * mainly.//from w w w . j a va2 s. c o m * * @param file * @param data * @param recordSeparator * @throws Exception */ public void writeCSVLine(File file, String[] data) throws Exception { FileWriter writer = new FileWriter(file, true); CSVFormat csvFileFormat = CSVFormat.DEFAULT.withRecordSeparator(System.getProperty("line.separator")); CSVPrinter csvFilePrinter = new CSVPrinter(writer, csvFileFormat); csvFilePrinter.printRecord(data); writer.flush(); writer.close(); csvFilePrinter.close(); }
From source file:ai.grakn.test.graql.analytics.ScalingTestIT.java
@Ignore @Test/*from w ww . ja v a2 s .com*/ public void countIT() throws InterruptedException, ExecutionException, InvalidGraphException, IOException { CSVPrinter printer = createCSVPrinter("countIT.txt"); // Insert super nodes into graph simpleOntology(keyspace); // get a count before adding any data Long emptyCount = Grakn.session(Grakn.DEFAULT_URI, keyspace).open(GraknTxType.WRITE).admin() .getTinkerTraversal().count().next(); LOGGER.info("gremlin count before data is: " + emptyCount); Set<String> superNodes = makeSuperNodes(keyspace); int previousGraphSize = 0; for (int graphSize : graphSizes) { LOGGER.info("current scale - super " + NUM_SUPER_NODES + " - nodes " + graphSize); Long conceptCount = (long) (NUM_SUPER_NODES * (graphSize + 1) + graphSize); printer.print(String.valueOf(conceptCount)); LOGGER.info("start generate graph " + System.currentTimeMillis() / 1000L + "s"); addNodesToSuperNodes(keyspace, superNodes, previousGraphSize, graphSize); previousGraphSize = graphSize; LOGGER.info("stop generate graph " + System.currentTimeMillis() / 1000L + "s"); Long gremlinCount = (long) (NUM_SUPER_NODES * (3 * graphSize + 1) + graphSize); LOGGER.info("gremlin count is: " + Grakn.session(Grakn.DEFAULT_URI, keyspace).open(GraknTxType.WRITE) .admin().getTinkerTraversal().count().next()); gremlinCount += emptyCount; LOGGER.info("expected gremlin count is: " + gremlinCount); for (int workerNumber : workerNumbers) { LOGGER.info("Setting number of workers to: " + workerNumber); Long countTime = 0L; for (int i = 0; i < REPEAT; i++) { LOGGER.info("repeat number: " + i); Long startTime = System.currentTimeMillis(); Long count = getCountQuery(Grakn.DEFAULT_URI, keyspace, workerNumber).execute(); assertEquals(conceptCount, count); LOGGER.info("count: " + count); Long stopTime = System.currentTimeMillis(); countTime += stopTime - startTime; LOGGER.info("count time: " + countTime / ((i + 1) * 1000)); } countTime /= REPEAT * 1000; LOGGER.info("time to count: " + countTime); printer.print(String.valueOf(countTime)); } printer.println(); printer.flush(); } printer.flush(); printer.close(); }
From source file:gov.usda.DataCatalogClient.Catalog.java
/** * Outputs a Catalog into tab delimited format. * <p>//from w w w .j a v a 2 s .c o m * Begins the process by listing out the header and calling all datasets to create * tab delimitted lines. * @param filePath String The output file for the catalog tab delimitted file. * @param dataListCode DataListingCode This will either print the Public Data Listing or the Enterprise * Data Inventory */ public void toCSV(String filePath, DataListingCode dataListingCode) throws IOException { Collections.sort(dataSetList); if (filePath == null) { throw (new NullPointerException("filepath cannot be null")); } PrintWriter out = null; CSVPrinter csvPrinter = null; CSVFormat csvFormat = CSVFormat.DEFAULT.withRecordSeparator("\n"); List<String> catalogString = new ArrayList<String>(); catalogString.add("Agency Name"); catalogString.add("Title"); catalogString.add("Description"); catalogString.add("MediaType"); catalogString.add("Download URL"); catalogString.add("Frequency"); catalogString.add("Bureau Code"); catalogString.add("Contact Email"); catalogString.add("Contact Name"); catalogString.add("Landing Page"); catalogString.add("Program Code"); catalogString.add("Publisher"); catalogString.add("Public Access Level"); catalogString.add("Access Level Comment"); catalogString.add("Tags"); catalogString.add("Last Update"); catalogString.add("Release Date"); catalogString.add("Unique Identifier"); catalogString.add("Data Dictionary"); catalogString.add("License"); catalogString.add("Spatial"); catalogString.add("Temporal"); catalogString.add("System of Records"); catalogString.add("Data Quality"); catalogString.add("Language"); catalogString.add("Theme"); catalogString.add("Reference"); catalogString.add("CKAN Create Date"); catalogString.add("CKAN Modified Date"); catalogString.add("CKAN Revision Timestamp"); catalogString.add("Is Part Of"); try { out = new PrintWriter(filePath); csvPrinter = new CSVPrinter(out, csvFormat); csvPrinter.printRecord(catalogString); for (Dataset ds : dataSetList) { if (dataListingCode.equals(DataListingCode.ENTERPRISE_DATA_INVENTORY)) { csvPrinter.printRecord(ds.datasetToListString()); } else if (dataListingCode.equals(DataListingCode.PUBLIC_DATA_LISTING)) { if (ds.getAccessLevel().equals(Dataset.AccessLevel.PUBLIC.toString()) || ds.getAccessLevel().equals(Dataset.AccessLevel.RESTRICTED)) { csvPrinter.printRecord(ds.datasetToListString()); } } } } catch (IOException e) { throw (e); } finally { out.close(); csvPrinter.close(); } }
From source file:edu.harvard.mcz.imagecapture.RunnableJobReportDialog.java
protected void serializeTableModel() { PrintWriter out = null;//from ww w . j a v a2 s .c om CSVPrinter writer = null; try { int cols = jTable.getModel().getColumnCount(); CSVFormat csvFormat = CSVFormat.DEFAULT.withQuoteMode(QuoteMode.ALL) .withHeaderComments(jTextArea.getText()); TableModel model = jTable.getModel(); switch (cols) { case 9: csvFormat = CSVFormat.DEFAULT.withQuoteMode(QuoteMode.ALL) .withHeader(model.getColumnName(0), model.getColumnName(1), model.getColumnName(2), model.getColumnName(3), model.getColumnName(4), model.getColumnName(5), model.getColumnName(6), model.getColumnName(7), model.getColumnName(8)) .withCommentMarker('*').withHeaderComments(jTextArea.getText()); break; case 6: csvFormat = CSVFormat.DEFAULT.withQuoteMode(QuoteMode.ALL) .withHeader(model.getColumnName(0), model.getColumnName(1), model.getColumnName(2), model.getColumnName(3), model.getColumnName(4), model.getColumnName(5)) .withCommentMarker('*').withHeaderComments(jTextArea.getText()); break; case 5: csvFormat = CSVFormat.DEFAULT.withQuoteMode(QuoteMode.ALL) .withHeader(model.getColumnName(0), model.getColumnName(1), model.getColumnName(2), model.getColumnName(3), model.getColumnName(4)) .withCommentMarker('*').withHeaderComments(jTextArea.getText()); break; case 4: csvFormat = CSVFormat.DEFAULT.withQuoteMode(QuoteMode.ALL) .withHeader(model.getColumnName(0), model.getColumnName(1), model.getColumnName(2), model.getColumnName(3)) .withCommentMarker('*').withHeaderComments(jTextArea.getText()); break; } log.debug(jTextArea.getText()); log.debug(csvFormat.getHeaderComments()); Date now = new Date(); SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmdd_HHmmss"); String time = dateFormat.format(now); String filename = "jobreport_" + time + ".csv"; out = new PrintWriter(filename); writer = new CSVPrinter(out, csvFormat); writer.flush(); int rows = jTable.getModel().getRowCount(); for (int i = 0; i < rows; i++) { ArrayList<String> values = new ArrayList<String>(); for (int col = 0; col < cols; col++) { values.add((String) jTable.getModel().getValueAt(i, col)); } writer.printRecord(values); } writer.flush(); writer.close(); JOptionPane.showMessageDialog(Singleton.getSingletonInstance().getMainFrame(), "Saved report to file: " + filename, "Report to CSV file", JOptionPane.OK_OPTION); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } finally { try { out.close(); } catch (Exception e) { } try { writer.close(); } catch (Exception e) { } } }
From source file:com.itemanalysis.jmetrik.file.JmetrikFileExporter.java
private boolean exportFile() { JmetrikFileReader reader = null;/* w w w. j av a2 s. co m*/ BufferedWriter writer = null; CSVPrinter printer = null; if (outputFile.exists() && !overwrite) return false; try { reader = new JmetrikFileReader(dataFile); writer = new BufferedWriter(new OutputStreamWriter(Files.newOutputStream(outputFile.toPath()))); reader.openConnection(); if (hasHeader) { String[] colNames = reader.getColumnNames(); printer = new CSVPrinter(writer, CSVFormat.DEFAULT.withCommentMarker('#').withDelimiter(delimiter).withHeader(colNames)); } else { printer = new CSVPrinter(writer, CSVFormat.DEFAULT.withCommentMarker('#').withDelimiter(delimiter)); } LinkedHashMap<VariableName, VariableAttributes> variableAttributes = reader.getVariableAttributes(); JmetrikCSVRecord record = null; VariableAttributes tempAttributes = null; //print scored values if (scored) { String tempValue = ""; while (reader.hasNext()) { record = reader.next(); for (VariableName v : variableAttributes.keySet()) { tempAttributes = variableAttributes.get(v); tempValue = record.originalValue(v); if (tempAttributes.getItemType() == ItemType.NOT_ITEM) { //write original string if not an item if (record.isMissing(v, tempValue) && empty) { printer.print(""); } else { printer.print(tempValue); } } else { //write scored value if a test item if (record.isMissing(v, tempValue) && empty) { printer.print(""); } else { printer.print(tempAttributes.getItemScoring().computeItemScore(tempValue)); } } } printer.println(); } //print original values } else { String tempValue = ""; while (reader.hasNext()) { record = reader.next(); for (VariableName v : variableAttributes.keySet()) { tempValue = record.originalValue(v); if (record.isMissing(v, tempValue) && empty) { printer.print(""); } else { printer.print(tempValue); } } printer.println(); } } } catch (IOException ex) { theException = ex; } finally { try { if (reader != null) reader.close(); if (printer != null) printer.close(); if (writer != null) writer.close(); } catch (IOException ex) { theException = ex; } } return true; }
From source file:com.itemanalysis.jmetrik.file.JmetrikFileImporter.java
private void convertFile() { CSVParser parser = null;/* ww w .j a v a 2 s . c om*/ Reader reader = null; CSVPrinter printer = null; Writer writer = null; try { if (outputFile.exists()) { if (!overwrite) { theException = new IOException("File already exists and overwrite==false"); return; } } else { outputFile.createNewFile(); } //For debugging // System.out.println("CREATED: " + outputFile.getAbsolutePath()); //Writer header to file writer = new OutputStreamWriter(new FileOutputStream(outputFile)); printer = new CSVPrinter(writer, CSVFormat.DEFAULT.withCommentMarker('#')); printer.printComment("VERSION"); printer.printRecord(new String[] { "jmetrik1" }); printer.printComment("METADATA"); printer.printRecord(new String[] { Integer.valueOf(nrow).toString() }); printer.printComment("ATTRIBUTES"); for (VariableName v : variableAttributeMap.keySet()) { printer.printRecord(variableAttributeMap.get(v).getAttributeArray()); } printer.printComment("DATA"); //Write data to file reader = new InputStreamReader(new BOMInputStream(new FileInputStream(dataFile)), "UTF-8"); parser = new CSVParser(reader, dataFileFormat); if (hasHeader) { parser = new CSVParser(reader, dataFileFormat.withHeader(colNames).withSkipHeaderRecord(true)); } else { parser = new CSVParser(reader, dataFileFormat.withHeader(colNames)); } Iterator<CSVRecord> iter = parser.iterator(); CSVRecord csvRecord = null; VariableAttributes variableAttributes = null; DataType dataType = null; String temp = ""; while (iter.hasNext()) { csvRecord = iter.next(); for (VariableName v : variableAttributeMap.keySet()) { temp = csvRecord.get(v.toString()); variableAttributes = variableAttributeMap.get(v); dataType = variableAttributes.getDataType(); if (!variableAttributes.isMissing(temp)) { if (DataType.INTEGER == dataType) { printer.print(Double.valueOf(Double.parseDouble(temp)).intValue()); } else if (DataType.DOUBLE == dataType) { printer.print(Double.parseDouble(temp)); } else { printer.print(temp); } } else { printer.print(temp); } } printer.println(); } } catch (IOException ex) { theException = ex; } finally { try { if (parser != null) parser.close(); if (reader != null) reader.close(); if (printer != null) printer.close(); if (writer != null) writer.close(); } catch (IOException ex) { theException = ex; logger.fatal(ex); } } }
From source file:canreg.client.dataentry.Convert.java
public static boolean convertData(canreg.client.gui.management.CanReg4MigrationInternalFrame.MigrationTask task, String filepath, String datafile, String regcode) { Connection conn;/* w ww. java 2s . c o m*/ Statement stmt; ResultSet rs_hdr; ResultSet rs_data; boolean success = false; int totalrowcount = 0; int rowsImported = 0; String csv = filepath + Globals.FILE_SEPARATOR + regcode + ".csv"; CSVPrinter printer; try { debugOut("Migrating data " + datafile); pconn = (ParadoxConnection) DriverManager .getConnection("jdbc:paradox:///" + filepath.replaceAll("\\\\", "/")); final ParadoxTable table = TableData.listTables(pconn, datafile).get(0); totalrowcount = table.getRowCount(); SystemDescription sd = new SystemDescription( Globals.CANREG_SERVER_SYSTEM_CONFIG_FOLDER + Globals.FILE_SEPARATOR + regcode + ".xml"); DatabaseVariablesListElement[] variableListElements; variableListElements = sd.getDatabaseVariableListElements(); ArrayList<String> dbvle = new ArrayList(); ArrayList<String> cols = new ArrayList(); // Handling variables names with reservered word by replacing underscore after variable name. for (DatabaseVariablesListElement variable : variableListElements) { if (variable.getShortName().endsWith("_")) { dbvle.add(variable.getShortName().replace("_", "")); } else { dbvle.add(variable.getShortName()); } } conn = DriverManager.getConnection("jdbc:paradox:///" + filepath.replaceAll("\\\\", "/")); final DatabaseMetaData meta = conn.getMetaData(); rs_hdr = meta.getColumns("", "", datafile, "%"); //Comparing variables in file and database while (rs_hdr.next()) { for (String dbvar : dbvle) { if (rs_hdr.getString("COLUMN_NAME").equals(dbvar) || rs_hdr.getString("COLUMN_NAME").replaceAll(" ", "_").equals(dbvar)) { cols.add(rs_hdr.getString("COLUMN_NAME")); } } } String[] strheader = new String[cols.size()]; String query = "SELECT "; for (int i = 0; i < cols.size(); i++) { strheader[i] = cols.get(i).toString(); if (i == cols.size() - 1) { query += "\"" + strheader[i] + "\""; } else { query += "\"" + strheader[i] + "\","; } } query += " FROM \"" + datafile + "\""; CSVFormat format = CSVFormat.DEFAULT.withFirstRecordAsHeader().withHeader(strheader).withDelimiter(','); debugOut(query); printer = new CSVPrinter(new FileWriter(csv), format); int hdrsize = strheader.length; Object[] strdata = new String[hdrsize]; stmt = conn.createStatement(); rs_data = stmt.executeQuery(query); if (Globals.DEBUG) { Statement stmt2 = conn.createStatement(); String q = "SELECT RecNum FROM \"" + datafile + "\""; ResultSet rs_all_data = stmt2.executeQuery(q); debugOut(rs_all_data.toString()); } while (rs_data.next()) { for (int i = 1; i < rs_data.getMetaData().getColumnCount() + 1; i++) { switch (rs_data.getMetaData().getColumnType(i)) { case 4: strdata[i - 1] = Integer.toString(rs_data.getShort(i)); break; case 12: strdata[i - 1] = StringEscapeUtils.escapeCsv(rs_data.getString(i)); break; } } printer.printRecord(strdata); rowsImported++; } printer.flush(); printer.close(); success = true; } catch (SQLException ex) { Logger.getLogger(Convert.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(Convert.class.getName()).log(Level.SEVERE, null, ex); } success = success && (rowsImported == totalrowcount); return success; }
From source file:com.rcv.ResultsWriter.java
private void generateSummarySpreadsheet(Map<Integer, Map<String, BigDecimal>> roundTallies, String precinct, String outputPath) throws IOException { String csvPath = outputPath + ".csv"; Logger.log(Level.INFO, "Generating summary spreadsheets: %s...", csvPath); // Get all candidates sorted by their first round tally. This determines the display order. // container for firstRoundTally Map<String, BigDecimal> firstRoundTally = roundTallies.get(1); // candidates sorted by first round tally List<String> sortedCandidates = sortCandidatesByTally(firstRoundTally); // totalActiveVotesPerRound is a map of round to total votes cast in each round Map<Integer, BigDecimal> totalActiveVotesPerRound = new HashMap<>(); // round indexes over all rounds plus final results round for (int round = 1; round <= numRounds; round++) { // tally is map of candidate to tally for the current round Map<String, BigDecimal> tallies = roundTallies.get(round); // total will contain total votes for all candidates in this round // this is used for calculating other derived data BigDecimal total = BigDecimal.ZERO; // tally indexes over all tallies for the current round for (BigDecimal tally : tallies.values()) { total = total.add(tally);//from w w w. ja va2s.c o m } totalActiveVotesPerRound.put(round, total); } // csvPrinter will be used to write output to csv file CSVPrinter csvPrinter; try { BufferedWriter writer = Files.newBufferedWriter(Paths.get(csvPath)); csvPrinter = new CSVPrinter(writer, CSVFormat.DEFAULT); } catch (IOException exception) { Logger.log(Level.SEVERE, "Error creating CSV file: %s\n%s", csvPath, exception.toString()); throw exception; } // print contest info addHeaderRows(csvPrinter, precinct); // add a row header for the round column labels csvPrinter.print("Rounds"); // round indexes over all rounds for (int round = 1; round <= numRounds; round++) { // label string will have the actual text which goes in the cell String label = String.format("Round %d", round); // cell for round label csvPrinter.print(label); } csvPrinter.println(); // actions don't make sense in individual precinct results if (precinct == null || precinct.isEmpty()) { addActionRows(csvPrinter); } final BigDecimal totalActiveVotesFirstRound = totalActiveVotesPerRound.get(1); // For each candidate: for each round: output total votes // candidate indexes over all candidates for (String candidate : sortedCandidates) { // show each candidate row with their totals for each round // text for the candidate name String candidateDisplayName = this.config.getNameForCandidateID(candidate); csvPrinter.print(candidateDisplayName); // round indexes over all rounds for (int round = 1; round <= numRounds; round++) { // vote tally this round BigDecimal thisRoundTally = roundTallies.get(round).get(candidate); // not all candidates may have a tally in every round if (thisRoundTally == null) { thisRoundTally = BigDecimal.ZERO; } // total votes cell csvPrinter.print(thisRoundTally.toString()); } // advance to next line csvPrinter.println(); } // row for the inactive CVR counts // inactive CVR header cell csvPrinter.print("Inactive ballots"); // round indexes through all rounds for (int round = 1; round <= numRounds; round++) { // count of votes inactive this round BigDecimal thisRoundInactive = BigDecimal.ZERO; if (round > 1) { // Exhausted count is the difference between the total votes in round 1 and the total votes // in the current round. thisRoundInactive = totalActiveVotesFirstRound.subtract(totalActiveVotesPerRound.get(round)) .subtract(roundToResidualSurplus.get(round)); } // total votes cell csvPrinter.print(thisRoundInactive.toString()); } csvPrinter.println(); // row for residual surplus (if needed) // We check if we accumulated any residual surplus over the course of the tabulation by testing // whether the value in the final round is positive. if (roundToResidualSurplus.get(numRounds).signum() == 1) { csvPrinter.print("Residual surplus"); for (int round = 1; round <= numRounds; round++) { csvPrinter.print(roundToResidualSurplus.get(round).toString()); } csvPrinter.println(); } // write xls to disk try { // output stream is used to write data to disk csvPrinter.flush(); csvPrinter.close(); } catch (IOException exception) { Logger.log(Level.SEVERE, "Error saving file: %s\n%s", outputPath, exception.toString()); throw exception; } }
From source file:canreg.client.analysis.AgeSpecificCasesTableBuilder.java
@Override public LinkedList<String> buildTable(String registryLabel, String reportFileName, int startYear, int endYear, Object[][] incidenceData, PopulationDataset[] populations, PopulationDataset[] standardPopulations, LinkedList<ConfigFields> configList, String[] engineParameters, FileTypes fileType) throws NotCompatibleDataException { LinkedList<String> generatedFiles = new LinkedList<String>(); String footerString = java.util.ResourceBundle .getBundle("canreg/client/analysis/resources/AgeSpecificCasesTableBuilder") .getString("TABLE BUILT ") + new Date() + java.util.ResourceBundle .getBundle("canreg/client/analysis/resources/AgeSpecificCasesTableBuilder") .getString(" BY CANREG5."); String notesString = ""; if (populations[0].getFilter().length() > 0) { notesString = java.util.ResourceBundle .getBundle("canreg/client/analysis/resources/AgeSpecificCasesTableBuilder") .getString("FILTER USED:") + " " + populations[0].getFilter(); }//from w ww . ja v a 2 s . c o m double tableFontSize = 7.5; String font = "Times"; int[] years = { startYear, endYear }; // double RegPop[][]; double totalCases[][]; String sexLabel[] = null; String tableLabel[] = null; String icdLabel[] = null; LinkedList cancerGroupsLocal[] = null; boolean showSeeNotesNote = true; char Childc[][] = new char[2][3]; double casesPerHundredThousand[][][]; double cumRate64[][]; double cumRate74[][]; tableLabel = ConfigFieldsReader.findConfig("table_label", configList); // sexLabel = ConfigFieldsReader.findConfig("sex_label", configList); sexLabel = new String[] { java.util.ResourceBundle.getBundle("canreg/client/analysis/resources/AbstractEditorialTableBuilder") .getString("MALE"), java.util.ResourceBundle.getBundle("canreg/client/analysis/resources/AbstractEditorialTableBuilder") .getString("FEMALE") }; icdLabel = ConfigFieldsReader.findConfig("ICD_groups_labels", configList); icd10GroupDescriptions = ConfigFieldsReader.findConfig("ICD10_groups", configList); cancerGroupsLocal = EditorialTableTools.generateICD10Groups(icd10GroupDescriptions); allCancerGroupsIndex = EditorialTableTools.getICD10index("ALL", icd10GroupDescriptions); leukemiaNOSCancerGroupIndex = EditorialTableTools.getICD10index(950, cancerGroupsLocal); skinCancerGroupIndex = EditorialTableTools.getICD10index("C44", icd10GroupDescriptions); bladderCancerGroupIndex = EditorialTableTools.getICD10index("C67", icd10GroupDescriptions); mesotheliomaCancerGroupIndex = EditorialTableTools.getICD10index("C45", icd10GroupDescriptions); kaposiSarkomaCancerGroupIndex = EditorialTableTools.getICD10index("C46", icd10GroupDescriptions); myeloproliferativeDisordersCancerGroupIndex = EditorialTableTools.getICD10index("MPD", icd10GroupDescriptions); myelodysplasticSyndromesCancerGroupIndex = EditorialTableTools.getICD10index("MDS", icd10GroupDescriptions); allCancerGroupsButSkinIndex = EditorialTableTools.getICD10index("ALLbC44", icd10GroupDescriptions); leukemiaNOSCancerGroupIndex = EditorialTableTools.getICD10index(950, cancerGroupsLocal); brainAndCentralNervousSystemCancerGroupIndex = EditorialTableTools.getICD10index("C70-72", icd10GroupDescriptions); ovaryCancerGroupIndex = EditorialTableTools.getICD10index(569, cancerGroupsLocal); otherCancerGroupsIndex = EditorialTableTools.getICD10index("O&U", icd10GroupDescriptions); numberOfCancerGroups = cancerGroupsLocal.length; lineBreaks = parseLineBreaks(ConfigFieldsReader.findConfig("line_breaks", configList)); numberOfYears = years[1] - years[0] + 1; minimumCasesLimit = minimumCasesPerYearLimit * numberOfYears; noOldData = true; casesPerHundredThousand = new double[numberOfSexes][numberOfAgeGroups][numberOfCancerGroups]; casesArray = new double[numberOfCancerGroups][numberOfSexes][numberOfAgeGroups]; // cumRate64 = new double[numberOfSexes][numberOfCancerGroups]; // cumRate74 = new double[numberOfSexes][numberOfCancerGroups]; populationArray = new double[numberOfSexes][numberOfAgeGroups]; foundAgeGroups = new boolean[numberOfAgeGroups]; if (areThesePopulationDatasetsCompatible(populations)) { for (PopulationDataset population : populations) { population.addPopulationDataToArrayForTableBuilder(populationArray, foundAgeGroups, new AgeGroupStructure(5, 85, 1)); } } else { throw new NotCompatibleDataException(); } populationString = populations[0].getPopulationDatasetName(); int lastCommaPlace = populationString.lastIndexOf(","); if (lastCommaPlace != -1) { populationString = populationString.substring(0, lastCommaPlace); } if (populations[0].getFilter().length() > 0) { notesString = java.util.ResourceBundle .getBundle("canreg/client/analysis/resources/AgeSpecificCasesTableBuilder") .getString("FILTER USED:") + populations[0].getFilter(); } standardPopulationArray = new double[numberOfSexes][numberOfAgeGroups]; for (PopulationDataset stdPopulation : standardPopulations) { stdPopulation.addPopulationDataToArrayForTableBuilder(standardPopulationArray, null, new AgeGroupStructure(5, 85, 1)); } // standardize population array for (int sexNumber = 0; sexNumber < numberOfSexes; sexNumber++) { for (int ageGroupNumber = 0; ageGroupNumber < numberOfAgeGroups; ageGroupNumber++) { standardPopulationArray[sexNumber][ageGroupNumber] = (standardPopulationArray[sexNumber][ageGroupNumber] / standardPopulationArray[sexNumber][numberOfAgeGroups - 1]) * 100000; } } highestPopulationAgeGroup = findHighestAgeGroup(foundAgeGroups); lowestPopulationAgeGroup = findLowestAgeGroup(foundAgeGroups); int records = 0; // generate statistics String sexString; String icdString; String yearString; String ageString; String basisString; int sex, icdNumber, year, icdIndex, yearIndex, ageGroup, ageInt, basis, cases; if (incidenceData != null) { for (Object[] line : incidenceData) { try { // Set default icdIndex = -1; cases = 0; // Unknown sex group = 3 sex = 3; // Extract data sexString = (String) line[SEX_COLUMN]; sex = Integer.parseInt(sexString.trim()); // sex = 3 is unknown sex if (sex > 2) { sex = 3; } // morphologyString = (String) line[MORPHOLOGY_COLUMN]; /* if (morphologyString.length() > 0) { int morphology = Integer.parseInt(morphologyString); if (morphology == 9140) { String behaviourString = getContentOfField( incidenceFieldDescriptionList, "behaviour", line).trim(); if (behaviourString.equals("3")) { icdIndex = kaposiSarkomaCancerGroupIndex; } } else if ((int)(morphology/10) == 905) { String behaviourString = getContentOfField(incidenceFieldDescriptionList, "behaviour", line).trim(); if (behaviourString.equals("3")) { icdIndex = mesotheliomaCancerGroupIndex; } } } */ if (icdIndex < 0) { icdString = (String) line[ICD10_COLUMN]; if (icdString.length() > 0 && icdString.trim().substring(0, 1).equals("C")) { icdString = icdString.trim().substring(1); icdNumber = Integer.parseInt(icdString); if (icdString.length() < 3) { icdNumber = icdNumber * 10; } icdIndex = EditorialTableTools.getICD10index(icdNumber, cancerGroupsLocal); if (icdIndex == -1) { icdIndex = -1; } } else if (icdString.length() > 0 && icdString.trim().substring(0, 1).equals("D")) { icdIndex = DONT_COUNT; // set don't count as default icdString = icdString.trim().substring(1); icdNumber = Integer.parseInt(icdString); if (icdString.length() < 3) { icdNumber = icdNumber * 10; } if (icdNumber == 90 || icdNumber == 414) { icdIndex = bladderCancerGroupIndex; } else if (((int) (icdNumber / 10)) == 45 || ((int) (icdNumber / 10)) == 47) { icdIndex = myeloproliferativeDisordersCancerGroupIndex; } else if (((int) (icdNumber / 10)) == 46) { icdIndex = myelodysplasticSyndromesCancerGroupIndex; } } } yearString = line[YEAR_COLUMN].toString(); year = Integer.parseInt(yearString); yearIndex = year - years[0]; ageString = line[AGE_COLUMN].toString(); ageInt = Integer.parseInt(ageString); if (ageInt == unknownAgeInt) { ageGroup = unknownAgeGroupIndex; } else { ageGroup = populations[yearIndex].getAgeGroupIndex(ageInt); // Adjust age group if (populations[yearIndex].getAgeGroupStructure().getSizeOfFirstGroup() != 1) { ageGroup += 1; } } // Extract cases cases = (Integer) line[CASES_COLUMN]; if (icdIndex != DONT_COUNT && year <= years[1] && year >= years[0]) { // Basis of diagnosis basisString = line[BASIS_DIAGNOSIS_COLUMN].toString(); if (basisString != null) { basis = Integer.parseInt(basisString.trim()); } else { basis = -1; } if (sex <= numberOfSexes && icdIndex >= 0 && icdIndex <= cancerGroupsLocal.length) { casesArray[icdIndex][sex - 1][ageGroup] += cases; } else if (otherCancerGroupsIndex >= 0) { casesArray[otherCancerGroupsIndex][sex - 1][ageGroup] += cases; } if (allCancerGroupsIndex >= 0) { casesArray[allCancerGroupsIndex][sex - 1][ageGroup] += cases; } if (allCancerGroupsButSkinIndex >= 0 && skinCancerGroupIndex >= 0 && icdIndex != skinCancerGroupIndex) { casesArray[allCancerGroupsButSkinIndex][sex - 1][ageGroup] += cases; } records += cases; if (records % recordsPerFeedback == 0) { System.out.println(java.util.ResourceBundle .getBundle("canreg/client/analysis/resources/AgeSpecificCasesTableBuilder") .getString("PROCESSING RECORD NUMBER: ") + records); } } } catch (NumberFormatException nfe) { Logger.getLogger(AgeSpecificCasesTableBuilder.class.getName()).log(Level.WARNING, null, nfe); } // Read next line } } System.out.println(java.util.ResourceBundle .getBundle("canreg/client/analysis/resources/AgeSpecificCasesTableBuilder").getString("PROCESSED ") + records + java.util.ResourceBundle .getBundle("canreg/client/analysis/resources/AgeSpecificCasesTableBuilder") .getString(" RECORDS.")); // Total casesPerHundredThousand totalCases = new double[numberOfSexes][numberOfCancerGroups]; // Crude rate // crudeRate = new double[numberOfSexes][numberOfCancerGroups]; for (int sexNumber = 0; sexNumber < 2; sexNumber++) { // The age groups ageLabel[lowestPopulationAgeGroup] = "0-"; for (int icdGroup = 0; icdGroup < numberOfCancerGroups; icdGroup++) { if (icdLabel[icdGroup].substring(0 + sexNumber, 1 + sexNumber).equalsIgnoreCase("1")) { // The age groups double previousAgeGroupCases = 0; double previousAgeGroupPopulation = 0; double previousAgeGroupWstdPopulation = 0; double lastAgeGroupCases = 0; double lastAgeGroupPopulation = 0; double lastAgeGroupWstdPopulation = 0; for (int ageGroupNumber = 1; ageGroupNumber < unknownAgeGroupIndex; ageGroupNumber++) { if (ageGroupNumber == 1) { for (int ag = lowestIncidenceAgeGroup; ag < ageGroupNumber; ag++) { previousAgeGroupCases += casesArray[icdGroup][sexNumber][ag]; previousAgeGroupPopulation += populationArray[sexNumber][ag]; previousAgeGroupWstdPopulation += standardPopulationArray[sexNumber][ag]; } } if (foundAgeGroups[ageGroupNumber] && ageGroupNumber < highestPopulationAgeGroup) { casesPerHundredThousand[sexNumber][ageGroupNumber][icdGroup] = 100000 * (casesArray[icdGroup][sexNumber][ageGroupNumber] + previousAgeGroupCases) / (populationArray[sexNumber][ageGroupNumber] + previousAgeGroupPopulation); previousAgeGroupCases = 0; previousAgeGroupPopulation = 0; previousAgeGroupWstdPopulation = 0; } else { previousAgeGroupCases += casesArray[icdGroup][sexNumber][ageGroupNumber]; previousAgeGroupPopulation += populationArray[sexNumber][ageGroupNumber]; previousAgeGroupWstdPopulation += standardPopulationArray[sexNumber][ageGroupNumber]; } } // We calculate the "leftovers" from the last age group if (previousAgeGroupPopulation > 0) { casesPerHundredThousand[sexNumber][highestPopulationAgeGroup][icdGroup] = 100000 * (previousAgeGroupCases) / (previousAgeGroupPopulation); } previousAgeGroupCases = 0; previousAgeGroupPopulation = 0; previousAgeGroupWstdPopulation = 0; } } } // ASR, vASR, MV, MI, DCO for (int sexNumber = 0; sexNumber < numberOfSexes; sexNumber++) { for (int icdGroup = 0; icdGroup < numberOfCancerGroups; icdGroup++) { double previousAgeGroupCases = 0; double previousAgeGroupPopulation = 0; double previousAgeGroupWstdPopulation = 0; double lastAgeGroupCases = 0; double lastAgeGroupPopulation = 0; double lastAgeGroupWstdPopulation = 0; totalCases[sexNumber][icdGroup] += casesArray[icdGroup][sexNumber][0]; for (int ageGroupNumber = 1; ageGroupNumber < unknownAgeGroupIndex; ageGroupNumber++) { if (ageGroupNumber == 1) { for (int ag = lowestIncidenceAgeGroup; ag < ageGroupNumber; ag++) { previousAgeGroupCases += casesArray[icdGroup][sexNumber][ag]; previousAgeGroupPopulation += populationArray[sexNumber][ag]; previousAgeGroupWstdPopulation += standardPopulationArray[sexNumber][ag]; } } if (foundAgeGroups[ageGroupNumber] && ageGroupNumber < highestPopulationAgeGroup && (previousAgeGroupPopulation + populationArray[sexNumber][ageGroupNumber] > 0)) { double asr = calculateASR( (previousAgeGroupCases + casesArray[icdGroup][sexNumber][ageGroupNumber]), (previousAgeGroupPopulation + populationArray[sexNumber][ageGroupNumber]), (previousAgeGroupWstdPopulation + standardPopulationArray[sexNumber][ageGroupNumber])); previousAgeGroupCases = 0; previousAgeGroupPopulation = 0; previousAgeGroupWstdPopulation = 0; } else if (ageGroupNumber < highestPopulationAgeGroup) { previousAgeGroupCases += casesArray[icdGroup][sexNumber][ageGroupNumber]; previousAgeGroupPopulation += populationArray[sexNumber][ageGroupNumber]; previousAgeGroupWstdPopulation += standardPopulationArray[sexNumber][ageGroupNumber]; } else { lastAgeGroupCases += casesArray[icdGroup][sexNumber][ageGroupNumber]; lastAgeGroupPopulation += populationArray[sexNumber][ageGroupNumber]; lastAgeGroupWstdPopulation += standardPopulationArray[sexNumber][ageGroupNumber]; } totalCases[sexNumber][icdGroup] += casesArray[icdGroup][sexNumber][ageGroupNumber]; } // We calculate the "leftovers" from the last age group if (lastAgeGroupPopulation > 0) { double asr = calculateASR(lastAgeGroupCases, lastAgeGroupPopulation, lastAgeGroupWstdPopulation); } // and take the unknown age group into account totalCases[sexNumber][icdGroup] += casesArray[icdGroup][sexNumber][unknownAgeGroupIndex]; if (totalCases[sexNumber][icdGroup] > 0) { /* We don't use confidence intervals so this was removed 16.07.07 double[] asrlul = calculateASRluL(ASR[sex][icdGroup], variL[sex][icdGroup], wstdPop[allAgeGroupsIndex]); ASRluL[sex][icdGroup][0] = asrlul[0]; ASRluL[sex][icdGroup][1] = asrlul[1]; */ // Cum. Rates if (highestPopulationAgeGroup > 13) { for (int k = 1; k <= 13; k++) { // cumRate64[sexNumber][icdGroup] += casesPerHundredThousand[sexNumber][k][icdGroup] * cumPop18[k] / 1000.0; } } if (highestPopulationAgeGroup > 15) { for (int k = 1; k <= 15; k++) { // cumRate74[sexNumber][icdGroup] += casesPerHundredThousand[sexNumber][k][icdGroup] * cumPop18[k] / 1000.0; } } /* if (!isSpecialized) { cumRate64[sex][allCancerGroupsIndex] += cumRate64[sex][icdGroup]; cumRate74[sex][allCancerGroupsIndex] += cumRate74[sex][icdGroup]; if (icdGroup!=skinCancerGroupIndex) { cumRate64[sex][allCancerGroupsIndex] += cumRate64[sex][icdGroup]; cumRate74[sex][allCancerGroupsIndex] += cumRate74[sex][icdGroup]; } } */ } } } // Adjust the age labels ageLabel[1] = "0-"; ageLabel[highestPopulationAgeGroup] = ageLabel[highestPopulationAgeGroup].substring(0, ageLabel[highestPopulationAgeGroup].length() - 1) + "+"; // Write it out NumberFormat nf = NumberFormat.getInstance(); nf.setMaximumFractionDigits(1); nf.setMinimumFractionDigits(1); Writer reportFileWriter; if (fileType.equals(FileTypes.csv)) { // write tab separated stuff here CSVPrinter csvOut; for (int sexNumber = 0; sexNumber < numberOfSexes - 1; sexNumber++) { try { String tabReportFileName = ""; try { tabReportFileName = reportFileName + sexLabel[sexNumber] + ".csv"; System.out.println(java.util.ResourceBundle.getBundle( "canreg/client/analysis/resources/AgeSpecificCasesPerHundredThousandTableBuilder") .getString("WRITING TO ") + tabReportFileName); reportFileWriter = new OutputStreamWriter(new FileOutputStream(tabReportFileName), "UTF-8"); } catch (IOException ioe) { System.out.println(java.util.ResourceBundle.getBundle( "canreg/client/analysis/resources/AgeSpecificCasesPerHundredThousandTableBuilder") .getString("ERROR IN REPORTFILE: ") + tabReportFileName); reportFileWriter = new OutputStreamWriter(System.out); } // reportStream = new PrintStream(tabReportFileName); // write the header line // reportStream = new PrintStream(tabReportFileName); // write the header line LinkedList<String> headers = new LinkedList<String>(); headers.add("SITE"); headers.add("ALL AGES"); headers.add("AGE UNK"); // add age groups for (int age = 1; age <= highestPopulationAgeGroup; age++) { headers.add(ageLabel[age]); } // headers.add("CRUDE RATE"); headers.add("(%)"); // headers.add("CUM 0-64"); // headers.add("CUM 0-74"); // headers.add("ASR"); headers.add("ICD (10th)"); CSVFormat format = CSVFormat.DEFAULT.withDelimiter(',') .withHeader(headers.toArray(new String[0])); csvOut = new CSVPrinter(reportFileWriter, format); LinkedList<String> line = new LinkedList<String>(); // write the data for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sexNumber) == '1') { line.add(icdLabel[j].substring(3)); line.add(formatNumber(totalCases[sexNumber][j], 0)); line.add(formatNumber(casesArray[j][sexNumber][unknownAgeGroupIndex], 0)); for (int age = 1; age <= highestPopulationAgeGroup; age++) { if (casesArray[j][sexNumber][age] > 0) { line.add(formatNumber(casesArray[j][sexNumber][age], 0)); } else { line.add("0"); } } // line.add(formatNumber(crudeRate[sexNumber][j], 2)); line.add(formatNumber(100 * totalCases[sexNumber][j] / totalCases[sexNumber][allCancerGroupsButSkinIndex])); // line.add(formatNumber(cumRate64[sexNumber][j], 2)); // line.add(formatNumber(cumRate74[sexNumber][j], 2)); // line.add(formatNumber(ASR[sexNumber][j])); line.add(icd10GroupDescriptions[j]); csvOut.printRecord(line); line.clear(); } } try { csvOut.flush(); csvOut.close(); } catch (IOException ex) { Logger.getLogger(AgeSpecificCasesPerHundredThousandTableBuilder.class.getName()) .log(Level.SEVERE, null, ex); } generatedFiles.add(tabReportFileName); } catch (IOException ex) { Logger.getLogger(AgeSpecificCasesTableBuilder.class.getName()).log(Level.SEVERE, null, ex); } } } else { // Make PS-file for (int sexNumber = 0; sexNumber < numberOfSexes - 1; sexNumber++) { String psFileName = reportFileName + "-" + sexLabel[sexNumber] + ".ps"; generatedFiles.add(psFileName); try { Writer fw = new OutputStreamWriter(new FileOutputStream(psFileName), "UTF-8"); nf.setMaximumFractionDigits(1); nf.setMinimumFractionDigits(1); fw.write("/RLT {rlineto} def\n"); fw.write("/LT {lineto} def\n"); fw.write("/MT {moveto} def\n"); fw.write("/SCF {scalefont} def\n"); fw.write("/SF {setfont} def\n"); fw.write("/SG {setgray} def\n"); fw.write("/FF {findfont} def\n"); fw.write("/SLW {setlinewidth} def\n"); fw.write("/CP {closepath} def\n"); fw.write("/Mainfont\n"); fw.write("/Helvetica-Bold FF " + (int) (tableFontSize * 2 - 3) + " SCF def\n"); fw.write("/Titlefont\n"); fw.write("/Helvetica FF " + tableFontSize + " SCF def\n"); fw.write("/Tablefont\n"); fw.write("/" + font + " FF " + tableFontSize + " SCF def\n"); fw.write("/ASRfont\n"); fw.write("/" + font + "-Bold FF " + tableFontSize + " SCF def\n"); fw.write("/ICDfont\n"); fw.write("/" + font + "-Italic FF " + tableFontSize + " SCF def\n"); fw.write("/ASRitalicsfont\n"); fw.write("/" + font + "-Italic-Bold FF " + tableFontSize + " SCF def\n"); fw.write("/col 735 def\n"); fw.write("/RS {dup stringwidth pop col exch sub 0 rmoveto show} def\n"); fw.write("/CS {dup stringwidth pop 810 exch sub 2 div 0 rmoveto show} def\n"); fw.write("/nstr 1 string def\n"); fw.write("/prtchar {nstr 0 3 -1 roll put nstr show} def\n"); fw.write("newpath\n"); fw.write("90 rotate -20 -570 translate\n"); // Landscape fw.write("Mainfont SF\n"); fw.write("0 535 MT (" + registryLabel + ") CS\n"); fw.write("Titlefont SF\n"); fw.write("0 525 MT (" + populationString + ") CS\n"); fw.write("0 513 MT (" + tableLabel[0] + " - " + sexLabel[sexNumber] + ") CS\n"); // draw the grey frame fw.write("0.85 SG 27 510 translate\n"); fw.write("0 -5 MT 785 -5 LT 785 -27 LT 0 -27 LT CP fill\n"); fw.write("0 -510 translate 0.95 SG\n"); double k = 475; for (int icd = 0; icd < numberOfCancerGroups; icd++) { if ((icd + 1) < numberOfCancerGroups && icdLabel[icd + 1].charAt(sexNumber) == '1') { int lines = (isLineBreak(icd)); if (lines > 0) { k -= 2; fw.write("0 " + (k - 2) + " MT 785 " + (k - 2) + " LT 785 " + (k - 2 - (lines * (tableFontSize))) + " LT 0 " + (k - 2 - (lines * (tableFontSize))) + " LT CP fill\n"); } else if (lines < 0) { k -= 2; } k -= tableFontSize; } } /* for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sex) == '1') { int lines = (isLineBreak(j)); if (lines > 0) { k -= 2; fw.write( "0 " + (k + tableFontSize) + " MT 774 " + (k + tableFontSize) + " LT 774 " + (k - lines * tableFontSize) + " LT 0 " + (k - lines * tableFontSize) + " LT CP fill\n"); } else if (lines > 0) k -= 2; k -= lines * tableFontSize; if (IsLineBreak(j)) { k -= 2; } // draw the grey frames if (j == 8) { fw.write( "0 " + (k + tableFontSize) + " MT 774 " + (k + tableFontSize) + " LT 774 " + (k - 35) + " LT 0 " + (k - 35) + " LT CP fill\n"); } else if (j == 34) { fw.write( "0 " + (k + tableFontSize) + " MT 774 " + (k + tableFontSize) + " LT 774 " + (k - 26) + " LT 0 " + (k - 26) + " LT CP fill\n"); } else if (j == 16 || j == 22 || j == 40) { fw.write( "0 " + (k + tableFontSize) + " MT 774 " + (k + tableFontSize) + " LT 774 " + (k - 18) + " LT 0 " + (k - 18) + " LT CP fill\n"); } else if (j == 27) { fw.write( "0 " + (k + tableFontSize) + " MT 774 " + (k + tableFontSize) + " LT 774 " + (k - 42) + " LT 0 " + (k - 42) + " LT CP fill\n"); } else if (j == 47) { fw.write( "0 " + (k + tableFontSize) + " MT 774 " + (k + tableFontSize) + " LT 774 " + (k - 34) + " LT 0 " + (k - 34) + " LT CP fill\n"); } else if (j == 53) { fw.write( "0 " + (k + tableFontSize) + " MT 774 " + (k + tableFontSize) + " LT 774 " + (k - 12) + " LT 0 " + (k - 12) + " LT CP fill\n"); } k -= (tableFontSize); } } */ fw.write("0 SG\n"); fw.write("ICDfont SF\n"); fw.write(" 740 496 MT (ICD) show\n"); fw.write(" 740 487 MT ((10th)) show\n"); k = 475; for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sexNumber) == '1') { if (isLineBreak(j - 1) != 0) { k -= 2; } if (j == skinCancerGroupIndex || j == ovaryCancerGroupIndex || j == bladderCancerGroupIndex || j == myelodysplasticSyndromesCancerGroupIndex || j == myeloproliferativeDisordersCancerGroupIndex || j == brainAndCentralNervousSystemCancerGroupIndex) { fw.write("ICDfont SF\n"); } else { fw.write("ICDfont SF\n"); } fw.write("745 " + k + " MT (" + icd10GroupDescriptions[j] + ") show\n"); k -= (tableFontSize); } } fw.write("/col col 20 sub def\n"); fw.write("0 491 MT ((%)) RS\n"); k = 475; for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sexNumber) == '1') { if (isLineBreak(j - 1) != 0) { k -= 2; } if (j == skinCancerGroupIndex || j == ovaryCancerGroupIndex || j == bladderCancerGroupIndex || j == myelodysplasticSyndromesCancerGroupIndex || j == myeloproliferativeDisordersCancerGroupIndex || j == brainAndCentralNervousSystemCancerGroupIndex) { fw.write("ICDfont SF\n"); } else { fw.write("Tablefont SF\n"); } if (j != allCancerGroupsIndex && allCancerGroupsButSkinIndex >= 0) { fw.write( "0 " + k + " MT (" + formatNumber(100 * totalCases[sexNumber][j] / totalCases[sexNumber][allCancerGroupsButSkinIndex]) + ") RS\n"); } k -= (tableFontSize); } } fw.write("/col 119 def\n"); fw.write("0 496 MT (ALL) RS\n"); fw.write("0 487 MT (AGES) RS\n"); k = 475; for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sexNumber) == '1') { if (isLineBreak(j - 1) != 0) { k -= 2; } if (j == skinCancerGroupIndex || j == ovaryCancerGroupIndex || j == bladderCancerGroupIndex || j == myelodysplasticSyndromesCancerGroupIndex || j == myeloproliferativeDisordersCancerGroupIndex || j == brainAndCentralNervousSystemCancerGroupIndex) { fw.write("ICDfont SF\n"); } else { fw.write("Tablefont SF\n"); } fw.write("0 " + k + " MT (" + formatNumber(totalCases[sexNumber][j], 0) + ") RS\n"); k -= (tableFontSize); } } fw.write("/col col 20 add def\n"); fw.write("0 496 MT (AGE) RS\n"); fw.write("0 487 MT (UNK) RS\n"); k = 475; for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sexNumber) == '1') { if (isLineBreak(j - 1) != 0) { k -= 2; } if (j == skinCancerGroupIndex || j == ovaryCancerGroupIndex || j == bladderCancerGroupIndex || j == myelodysplasticSyndromesCancerGroupIndex || j == myeloproliferativeDisordersCancerGroupIndex || j == brainAndCentralNervousSystemCancerGroupIndex) { fw.write("ICDfont SF\n"); } else { fw.write("Tablefont SF\n"); } fw.write("0 " + k + " MT (" + formatNumber(casesArray[j][sexNumber][unknownAgeGroupIndex], 0) + ") RS\n"); k -= (tableFontSize); } } if (highestPopulationAgeGroup == numberOfAgeGroups - 4) { fw.write("/col 145 def\n"); } else if (highestPopulationAgeGroup == numberOfAgeGroups - 5) { fw.write("/col 176 def\n"); } else if (highestPopulationAgeGroup == numberOfAgeGroups - 6) { fw.write("/col 208 def\n"); } else { fw.write("/col 145 def\n"); } for (int age = 1; age <= highestPopulationAgeGroup; age++) { fw.write("/col col 26 add def\n"); fw.write("0 491 MT (" + ageLabel[age] + ") RS\n"); // fw.write("/col col 5 sub def\n"); k = 475; for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sexNumber) == '1') { if (isLineBreak(j - 1) != 0) { k -= 2; } if (j == skinCancerGroupIndex || j == ovaryCancerGroupIndex || j == bladderCancerGroupIndex || j == myelodysplasticSyndromesCancerGroupIndex || j == myeloproliferativeDisordersCancerGroupIndex || j == brainAndCentralNervousSystemCancerGroupIndex) { fw.write("ICDfont SF\n"); } else { fw.write("Tablefont SF\n"); } if (casesArray[j][sexNumber][age] > 0) { fw.write("0 " + k + " MT (" + formatNumber(casesArray[j][sexNumber][age], 0) + ") RS\n"); } else { fw.write("0 " + k + " MT ( - ) RS\n"); } k -= (tableFontSize); } } } fw.write("3 492 MT ( S I T E) show\n"); k = 475; for (int j = 0; j < numberOfCancerGroups; j++) { if (icdLabel[j].charAt(sexNumber) == '1') { if (isLineBreak(j - 1) != 0) { k -= 2; } if (j == skinCancerGroupIndex || j == ovaryCancerGroupIndex || j == bladderCancerGroupIndex || j == myelodysplasticSyndromesCancerGroupIndex || j == myeloproliferativeDisordersCancerGroupIndex || j == brainAndCentralNervousSystemCancerGroupIndex) { fw.write("ICDfont SF\n"); } else { fw.write("Tablefont SF\n"); } fw.write("3 " + k + " MT (" + icdLabel[j].substring(3) + ") show\n"); k -= (tableFontSize); } } if (showSeeNotesNote) { fw.write("3 0 MT (" + notesString + ") show\n"); } // Write the footer fw.write("0 0 MT (" + footerString + ") CS\n"); fw.write("showpage\n"); System.out.println("Wrote " + psFileName + "."); fw.close(); } catch (IOException ioe) { System.out.println(ioe); } } } if (fileType == FileTypes.pdf) { LinkedList<String> newlyGeneratedFiles = new LinkedList<String>(); for (String fileN : generatedFiles) { PsToPdfConverter pstopdf = new PsToPdfConverter(gspath); newlyGeneratedFiles.add(pstopdf.convert(fileN)); // delete the ps file File file = new File(fileN); file.delete(); } generatedFiles = newlyGeneratedFiles; } System.out.println("Fini!"); return generatedFiles; }