bug fixes
This commit is contained in:
parent
e3a9e552a7
commit
62f69d2ea5
|
@ -367,7 +367,7 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
// hasValue = createFields(multiplicityFieldset.getFields(), mainDocumentPart, 3, createListing, visibilityRuleService, hasMultiplicityItems);
|
||||
boolean hasValueInner = false;
|
||||
if (fieldSetModel.getMultiplicity() != null && fieldSetModel.getMultiplicity().getTableView()) {
|
||||
if (fieldSetModel.getMultiplicity() != null && fieldSetModel.getMultiplicity().getTableView() && tbl != null) {
|
||||
row = tbl.createRow();
|
||||
hasValueInner = createFieldsInTable(fieldSetModel, multiplicityFieldset, row, indent, createListing, hasMultiplicityItems, numOfRows, visibilityService);
|
||||
numOfRows++;
|
||||
|
@ -385,7 +385,7 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
}
|
||||
if (multiplicityItems == 1) {
|
||||
String text = mainDocumentPart.getLastParagraph().getRuns().get(0).getText(0);
|
||||
String text = mainDocumentPart.getLastParagraph().getRuns().getFirst().getText(0);
|
||||
if (text.equals("a. ")) {
|
||||
mainDocumentPart.getLastParagraph().removeRun(0);
|
||||
}
|
||||
|
@ -471,40 +471,26 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
} else if (fieldValueModel != null) {
|
||||
this.indent = indent;
|
||||
String format = this.formatter(field, fieldValueModel);
|
||||
Boolean hasMultiAutoComplete = false;
|
||||
boolean isResearcher = false;
|
||||
if (field.getData() instanceof LabelAndMultiplicityDataModel) {
|
||||
hasMultiAutoComplete = ((LabelAndMultiplicityDataModel) field.getData()).getMultipleSelect();
|
||||
}
|
||||
if (field.getData() instanceof SelectDataModel) {
|
||||
hasMultiAutoComplete = ((SelectDataModel) field.getData()).getMultipleSelect();
|
||||
}
|
||||
if (field.getData() instanceof ReferenceTypeDataModel) {
|
||||
hasMultiAutoComplete = ((ReferenceTypeDataModel) field.getData()).getMultipleSelect();
|
||||
isResearcher = ((ReferenceTypeDataModel) field.getData()).getReferenceType().getCode().equals(this.wordFileTransformerServiceProperties.getResearcherReferenceCode());
|
||||
}
|
||||
|
||||
if (format != null && !format.isEmpty()) {
|
||||
boolean isMultiAutoComplete = hasMultiAutoComplete != null && hasMultiAutoComplete;
|
||||
boolean arrayStringFormat = format.charAt(0) == '[';
|
||||
if (arrayStringFormat || isMultiAutoComplete) {
|
||||
List<String> values = (arrayStringFormat) ? Arrays.asList(format.substring(1, format.length() - 1).split(",[ ]*")) : Arrays.asList(format.split(",[ ]*"));
|
||||
if (values.size() > 1) {
|
||||
boolean orcidResearcher;
|
||||
List<String> extractValues = this.extractValues(field, fieldValueModel);
|
||||
if (!extractValues.isEmpty()){
|
||||
int numOfValuesInCell = 0;
|
||||
for (String val : values) {
|
||||
orcidResearcher = false;
|
||||
for (String extractValue : extractValues){
|
||||
boolean orcidResearcher = false;
|
||||
String orcId = null;
|
||||
if (isResearcher && val.contains("orcid:")) {
|
||||
orcId = val.substring(val.indexOf(':') + 1, val.indexOf(')'));
|
||||
val = val.substring(0, val.indexOf(':') + 1) + " ";
|
||||
if (isResearcher && extractValue.contains("orcid:")) {
|
||||
orcId = extractValue.substring(extractValue.indexOf(':') + 1, extractValue.indexOf(')'));
|
||||
extractValue = extractValue.substring(0, extractValue.indexOf(':') + 1) + " ";
|
||||
orcidResearcher = true;
|
||||
}
|
||||
format = "• " + val;
|
||||
if (extractValues.size() > 1) extractValue = "• " + extractValue;
|
||||
if (hasMultiplicityItems) {
|
||||
XWPFParagraph paragraph = mainDocumentPart.getCell(mainDocumentPart.getTableCells().size()).addParagraph();
|
||||
paragraph.createRun().setText(format);
|
||||
paragraph.createRun().setText(extractValue);
|
||||
if (orcidResearcher) {
|
||||
XWPFHyperlinkRun run = paragraph.createHyperlinkRun("https://orcid.org/" + orcId);
|
||||
run.setText(orcId);
|
||||
|
@ -512,9 +498,11 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
run.setColor("0000FF");
|
||||
paragraph.createRun().setText(")");
|
||||
}
|
||||
hasValue = true;
|
||||
hasMultiplicityItems = false;
|
||||
} else {
|
||||
XWPFParagraph paragraph = addCellContent(format, mainDocumentPart, field.getData().getFieldType().equals(FieldType.RICH_TEXT_AREA) ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent, numOfRows, numOfCells, numOfValuesInCell);
|
||||
XWPFParagraph paragraph = addCellContent(extractValue, mainDocumentPart, field.getData().getFieldType().equals(FieldType.RICH_TEXT_AREA) ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent, numOfRows, numOfCells, numOfValuesInCell);
|
||||
if (paragraph != null) {
|
||||
numOfValuesInCell++;
|
||||
if (orcidResearcher) {
|
||||
XWPFHyperlinkRun run = paragraph.createHyperlinkRun("https://orcid.org/" + orcId);
|
||||
|
@ -523,26 +511,9 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
run.setColor("0000FF");
|
||||
paragraph.createRun().setText(")");
|
||||
}
|
||||
if (paragraph != null) {
|
||||
hasValue = true;
|
||||
}
|
||||
}
|
||||
format = null;
|
||||
}
|
||||
} else if (values.size() == 1) {
|
||||
format = values.getFirst();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (hasMultiplicityItems && format != null) {
|
||||
XWPFParagraph paragraph = mainDocumentPart.getCell(mainDocumentPart.getTableCells().size()).addParagraph();
|
||||
paragraph.createRun().setText(format);
|
||||
hasMultiplicityItems = false;
|
||||
hasValue = true;
|
||||
} else {
|
||||
XWPFParagraph paragraph = addCellContent(format, mainDocumentPart, field.getData().getFieldType().equals(FieldType.RICH_TEXT_AREA) ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent, numOfRows, numOfCells, 0);
|
||||
if (paragraph != null) {
|
||||
hasValue = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -617,7 +588,6 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
} else if (fieldValueModel != null) {
|
||||
this.indent = indent;
|
||||
String format = this.formatter(field, fieldValueModel);
|
||||
boolean isMultiAutoComplete = false;
|
||||
boolean isResearcher = false;
|
||||
boolean isOrganization = false;
|
||||
|
@ -639,31 +609,36 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
|
||||
if (isOrganization || isExternalDataset || isPublication) {
|
||||
if (fieldValueModel.getReferences() != null) {
|
||||
for (ReferenceModel referenceModel : fieldValueModel.getReferences())
|
||||
createHypeLink(mainDocumentPart, format, referenceModel.getDefinition().getFields().stream().filter(x -> x.getCode().equals("pidTypeField")).map(ReferenceFieldModel::getValue).findFirst().orElse(null), referenceModel.getReference(), hasMultiplicityItems, isMultiAutoComplete && fieldValueModel.getReferences().size() > 1);
|
||||
for (ReferenceModel referenceModel : fieldValueModel.getReferences()) {
|
||||
String label = "";
|
||||
if (referenceModel.getLabel() != null && !referenceModel.getLabel().isBlank()) {
|
||||
label = referenceModel.getLabel();
|
||||
}
|
||||
if (referenceModel.getDescription() != null && !referenceModel.getDescription().isBlank()) {
|
||||
label = (label.isBlank() ? "" : " ") + referenceModel.getDescription();
|
||||
}
|
||||
createHypeLink(mainDocumentPart, label, referenceModel.getDefinition().getFields().stream().filter(x -> x.getCode().equals("pidTypeField")).map(ReferenceFieldModel::getValue).findFirst().orElse(null), referenceModel.getReference(), hasMultiplicityItems, isMultiAutoComplete && fieldValueModel.getReferences().size() > 1);
|
||||
}
|
||||
if (hasMultiplicityItems) hasMultiplicityItems = false;
|
||||
|
||||
hasValue = true;
|
||||
}
|
||||
|
||||
} else {
|
||||
if (format != null && !format.isEmpty()) {
|
||||
boolean arrayStringFormat = format.charAt(0) == '[';
|
||||
if (arrayStringFormat || isMultiAutoComplete) {
|
||||
List<String> values = (arrayStringFormat) ? Arrays.asList(format.substring(1, format.length() - 1).split(",[ ]*")) : Arrays.asList(format.split(",[ ]*"));
|
||||
if (values.size() > 1) {
|
||||
boolean orcidResearcher;
|
||||
for (String val : values) {
|
||||
orcidResearcher = false;
|
||||
List<String> extractValues = this.extractValues(field, fieldValueModel);
|
||||
|
||||
if (!extractValues.isEmpty()){
|
||||
for (String extractValue : extractValues){
|
||||
boolean orcidResearcher = false;
|
||||
String orcId = null;
|
||||
if (isResearcher && val.contains("orcid:")) {
|
||||
orcId = val.substring(val.indexOf(':') + 1, val.indexOf(')'));
|
||||
val = val.substring(0, val.indexOf(':') + 1) + " ";
|
||||
if (isResearcher && extractValue.contains("orcid:")) {
|
||||
orcId = extractValue.substring(extractValue.indexOf(':') + 1, extractValue.indexOf(')'));
|
||||
extractValue = extractValue.substring(0, extractValue.indexOf(':') + 1) + " ";
|
||||
orcidResearcher = true;
|
||||
}
|
||||
format = "• " + val;
|
||||
if (extractValues.size() > 1) extractValue = "• " + extractValue;
|
||||
if (hasMultiplicityItems) {
|
||||
mainDocumentPart.getLastParagraph().createRun().setText(format);
|
||||
mainDocumentPart.getLastParagraph().createRun().setText(extractValue);
|
||||
if (orcidResearcher) {
|
||||
XWPFHyperlinkRun run = mainDocumentPart.getLastParagraph().createHyperlinkRun("https://orcid.org/" + orcId);
|
||||
run.setText(orcId);
|
||||
|
@ -671,9 +646,11 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
run.setColor("0000FF");
|
||||
mainDocumentPart.getLastParagraph().createRun().setText(")");
|
||||
}
|
||||
hasValue = true;
|
||||
hasMultiplicityItems = false;
|
||||
} else {
|
||||
XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getData().getFieldType().equals(FieldType.RICH_TEXT_AREA) ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent);
|
||||
XWPFParagraph paragraph = addParagraphContent(extractValue, mainDocumentPart, field.getData().getFieldType().equals(FieldType.RICH_TEXT_AREA) ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent);
|
||||
if (paragraph != null) {
|
||||
if (orcidResearcher) {
|
||||
XWPFHyperlinkRun run = paragraph.createHyperlinkRun("https://orcid.org/" + orcId);
|
||||
run.setText(orcId);
|
||||
|
@ -681,27 +658,9 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
run.setColor("0000FF");
|
||||
paragraph.createRun().setText(")");
|
||||
}
|
||||
if (paragraph != null) {
|
||||
hasValue = true;
|
||||
}
|
||||
}
|
||||
format = null;
|
||||
}
|
||||
} else if (values.size() == 1) {
|
||||
format = values.getFirst();
|
||||
}
|
||||
}
|
||||
}
|
||||
if (format != null) {
|
||||
if (hasMultiplicityItems) {
|
||||
mainDocumentPart.getLastParagraph().createRun().setText(format);
|
||||
hasMultiplicityItems = false;
|
||||
hasValue = true;
|
||||
} else {
|
||||
XWPFParagraph paragraph = addParagraphContent(format, mainDocumentPart, field.getData().getFieldType().equals(FieldType.RICH_TEXT_AREA) ? ParagraphStyle.HTML : ParagraphStyle.TEXT, numId, indent);
|
||||
if (paragraph != null) {
|
||||
hasValue = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -716,11 +675,9 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
return hasValue;
|
||||
}
|
||||
|
||||
private XWPFParagraph addCellContent(Object content, XWPFTableRow mainDocumentPart, ParagraphStyle style, BigInteger numId, int indent, int numOfRows, int numOfCells, int numOfValuesInCell) {
|
||||
if (content != null) {
|
||||
if (content instanceof String && ((String) content).isEmpty()) {
|
||||
return null;
|
||||
}
|
||||
private XWPFParagraph addCellContent(String content, XWPFTableRow mainDocumentPart, ParagraphStyle style, BigInteger numId, int indent, int numOfRows, int numOfCells, int numOfValuesInCell) {
|
||||
if (content == null || content.isEmpty()) return null;
|
||||
|
||||
this.indent = indent;
|
||||
XWPFTableCell cell;
|
||||
if (numOfRows > 0 || numOfValuesInCell > 0) {
|
||||
|
@ -742,7 +699,6 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
return paragraph;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -782,31 +738,31 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
}
|
||||
|
||||
private String formatter(FieldModel field, org.opencdmp.commonmodels.models.description.FieldModel fieldValueModel) throws InvalidApplicationException {
|
||||
private List<String> extractValues(FieldModel field, org.opencdmp.commonmodels.models.description.FieldModel fieldValueModel) throws InvalidApplicationException {
|
||||
List<String> values = new ArrayList<>();
|
||||
if (fieldValueModel == null || field == null || field.getData() == null) {
|
||||
return null;
|
||||
return values;
|
||||
}
|
||||
switch (field.getData().getFieldType()) {
|
||||
case REFERENCE_TYPES: {
|
||||
List<String> values = new ArrayList<>();
|
||||
if (fieldValueModel.getReferences() != null && !fieldValueModel.getReferences().isEmpty()) {
|
||||
for (ReferenceModel referenceModel : fieldValueModel.getReferences()) {
|
||||
if (referenceModel != null) {
|
||||
String label = "";
|
||||
if (referenceModel.getLabel() != null && !referenceModel.getLabel().isBlank()) {
|
||||
values.add(referenceModel.getLabel());
|
||||
label = referenceModel.getLabel();
|
||||
}
|
||||
if (referenceModel.getDescription() != null && !referenceModel.getDescription().isBlank()) {
|
||||
values.add(referenceModel.getLabel());
|
||||
label = (label.isBlank() ? "" : " ") + referenceModel.getDescription();
|
||||
}
|
||||
if (!label.isBlank()) values.add(label);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return String.join(", ", values);
|
||||
break;
|
||||
}
|
||||
case TAGS:
|
||||
case SELECT: {
|
||||
List<String> values = new ArrayList<>();
|
||||
if (fieldValueModel.getTextListValue() != null && !fieldValueModel.getTextListValue().isEmpty()) {
|
||||
SelectDataModel selectDataModel = (SelectDataModel) field.getData();
|
||||
if (selectDataModel != null && selectDataModel.getOptions() != null && !selectDataModel.getOptions().isEmpty()) {
|
||||
|
@ -815,44 +771,54 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
}
|
||||
}
|
||||
return String.join(", ", values);
|
||||
break;
|
||||
}
|
||||
case BOOLEAN_DECISION:
|
||||
if (fieldValueModel.getBooleanValue() != null && fieldValueModel.getBooleanValue()) return "Yes";
|
||||
if (fieldValueModel.getBooleanValue() != null && !fieldValueModel.getBooleanValue()) return "No";
|
||||
return null;
|
||||
if (fieldValueModel.getBooleanValue() != null && fieldValueModel.getBooleanValue()) values.add("Yes");
|
||||
if (fieldValueModel.getBooleanValue() != null && !fieldValueModel.getBooleanValue()) values.add("No");
|
||||
break;
|
||||
case RADIO_BOX:
|
||||
RadioBoxDataModel radioBoxDataModel = (RadioBoxDataModel) field.getData();
|
||||
if (fieldValueModel.getTextValue() != null && radioBoxDataModel != null && radioBoxDataModel.getOptions() != null) {
|
||||
for (RadioBoxDataModel.RadioBoxOptionModel option : radioBoxDataModel.getOptions()) {
|
||||
if (option.getValue().equals(fieldValueModel.getTextValue()) || option.getLabel().equals(fieldValueModel.getTextValue())) return option.getLabel();
|
||||
if (option.getValue().equals(fieldValueModel.getTextValue()) || option.getLabel().equals(fieldValueModel.getTextValue())) {
|
||||
values.add(option.getLabel());
|
||||
break;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
case CHECK_BOX:
|
||||
}
|
||||
break;
|
||||
case CHECK_BOX: {
|
||||
LabelDataModel checkBoxData = (LabelDataModel) field.getData();
|
||||
if (fieldValueModel.getBooleanValue() == null || !fieldValueModel.getBooleanValue()) return null;
|
||||
return checkBoxData != null ? checkBoxData.getLabel() : null;
|
||||
if (fieldValueModel.getBooleanValue() != null && fieldValueModel.getBooleanValue() && checkBoxData != null && checkBoxData.getLabel() != null) values.add(checkBoxData.getLabel());
|
||||
break;
|
||||
}
|
||||
case DATE_PICKER: {
|
||||
return fieldValueModel.getDateValue() != null ? DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.systemDefault()).format(fieldValueModel.getDateValue()) : "";
|
||||
if (fieldValueModel.getDateValue() != null) values.add(DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.systemDefault()).format(fieldValueModel.getDateValue()));
|
||||
break;
|
||||
}
|
||||
case FREE_TEXT:
|
||||
case TEXT_AREA:
|
||||
case RICH_TEXT_AREA:
|
||||
return fieldValueModel.getTextValue() != null ? fieldValueModel.getTextValue() : "";
|
||||
case DATASET_IDENTIFIER:
|
||||
case VALIDATION:
|
||||
if (fieldValueModel.getExternalIdentifier() != null) {
|
||||
return "id: " + fieldValueModel.getExternalIdentifier().getIdentifier() + ", Type: " + fieldValueModel.getExternalIdentifier().getType();
|
||||
case RICH_TEXT_AREA: {
|
||||
if (fieldValueModel.getTextValue() != null && !fieldValueModel.getTextValue().isBlank()) values.add(fieldValueModel.getTextValue());
|
||||
break;
|
||||
}
|
||||
case DATASET_IDENTIFIER:
|
||||
case VALIDATION: {
|
||||
if (fieldValueModel.getExternalIdentifier() != null) {
|
||||
values.add("id: " + fieldValueModel.getExternalIdentifier().getIdentifier() + ", Type: " + fieldValueModel.getExternalIdentifier().getType());
|
||||
}
|
||||
break;
|
||||
}
|
||||
return "";
|
||||
case UPLOAD:
|
||||
case INTERNAL_ENTRIES_DESCRIPTIONS:
|
||||
case INTERNAL_ENTRIES_DMPS:
|
||||
return null;
|
||||
break;
|
||||
default:
|
||||
throw new InvalidApplicationException("Invalid type " + field.getData().getFieldType());
|
||||
}
|
||||
|
||||
return values;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -908,21 +874,21 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
this.replaceTextSegment(p, "'{ARGOS.DATASET.TITLE}'", descriptionModel.getLabel());
|
||||
}
|
||||
|
||||
String researchersNames = "";
|
||||
StringBuilder researchersNames = new StringBuilder();
|
||||
int i = 0;
|
||||
for (ReferenceModel researcher : researchers) {
|
||||
i++;
|
||||
researchersNames += researcher.getLabel() + (i < researchers.size() ? ", " : "");
|
||||
researchersNames.append(researcher.getLabel()).append(i < researchers.size() ? ", " : "");
|
||||
}
|
||||
this.replaceTextSegment(p, "'{ARGOS.DMP.RESEARCHERS}'", researchersNames, 15);
|
||||
this.replaceTextSegment(p, "'{ARGOS.DMP.RESEARCHERS}'", researchersNames.toString(), 15);
|
||||
|
||||
String organisationsNames = "";
|
||||
StringBuilder organisationsNames = new StringBuilder();
|
||||
i = 0;
|
||||
for (ReferenceModel organisation : organizations) {
|
||||
i++;
|
||||
organisationsNames += organisation.getLabel() + (i < organizations.size() ? ", " : "");
|
||||
organisationsNames.append(organisation.getLabel()).append(i < organizations.size() ? ", " : "");
|
||||
}
|
||||
this.replaceTextSegment(p, "'{ARGOS.DMP.ORGANIZATIONS}'", organisationsNames, 15);
|
||||
this.replaceTextSegment(p, "'{ARGOS.DMP.ORGANIZATIONS}'", organisationsNames.toString(), 15);
|
||||
|
||||
if (this.textSegmentExists(p, "'{ARGOS.DMP.DESCRIPTION}'")) {
|
||||
descrParPos = parPos;
|
||||
|
@ -935,27 +901,27 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
this.replaceTextSegment(p, "'{ARGOS.DATASET.DESCRIPTION}'", "");
|
||||
}
|
||||
}
|
||||
if ((descrParPos != -1) && (dmpEntity != null) && (dmpEntity.getDescription() != null) && !isDescription) {
|
||||
if ((descrParPos != -1) && (dmpEntity.getDescription() != null) && !isDescription) {
|
||||
XmlCursor cursor = descrPar.getCTP().newCursor();
|
||||
cursor.toNextSibling();
|
||||
Document htmlDoc = Jsoup.parse(((String) dmpEntity.getDescription()).replaceAll("\n", "<br>"));
|
||||
Document htmlDoc = Jsoup.parse((dmpEntity.getDescription()).replaceAll("\n", "<br>"));
|
||||
HtmlToWorldBuilder htmlToWorldBuilder = new HtmlToWorldBuilder(descrPar, 0, cursor);
|
||||
NodeTraversor.traverse(htmlToWorldBuilder, htmlDoc);
|
||||
}
|
||||
if ((descrParPos != -1) && (descriptionModel != null) && (descriptionModel.getDescription() != null) && isDescription) {
|
||||
XmlCursor cursor = descrPar.getCTP().newCursor();
|
||||
cursor.toNextSibling();
|
||||
Document htmlDoc = Jsoup.parse(((String) descriptionModel.getDescription()).replaceAll("\n", "<br>"));
|
||||
Document htmlDoc = Jsoup.parse((descriptionModel.getDescription()).replaceAll("\n", "<br>"));
|
||||
HtmlToWorldBuilder htmlToWorldBuilder = new HtmlToWorldBuilder(descrPar, 0, cursor);
|
||||
NodeTraversor.traverse(htmlToWorldBuilder, htmlDoc);
|
||||
}
|
||||
|
||||
|
||||
XWPFTable tbl = document.getTables().get(0);
|
||||
XWPFTable tbl = document.getTables().getFirst();
|
||||
Iterator<XWPFTableRow> it = tbl.getRows().iterator();
|
||||
it.next(); // skip first row
|
||||
if (it.hasNext() && !funders.isEmpty()) {
|
||||
XWPFParagraph p = it.next().getCell(0).getParagraphs().get(0);
|
||||
XWPFParagraph p = it.next().getCell(0).getParagraphs().getFirst();
|
||||
XWPFRun run = p.createRun();
|
||||
run.setText(funders.getFirst().getLabel());
|
||||
run.setFontSize(15);
|
||||
|
@ -964,7 +930,7 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
it = tbl.getRows().iterator();
|
||||
it.next();
|
||||
if (it.hasNext() && !grants.isEmpty()) {
|
||||
XWPFParagraph p = it.next().getCell(1).getParagraphs().get(0);
|
||||
XWPFParagraph p = it.next().getCell(1).getParagraphs().getFirst();
|
||||
XWPFRun run = p.createRun();
|
||||
String text = grants.getFirst().getLabel();
|
||||
String reference = grants.getFirst().getReference();
|
||||
|
@ -979,12 +945,8 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
|
||||
private boolean textSegmentExists(XWPFParagraph paragraph, String textToFind) {
|
||||
TextSegment foundTextSegment = null;
|
||||
PositionInParagraph startPos = new PositionInParagraph(0, 0, 0);
|
||||
while ((foundTextSegment = this.searchText(paragraph, textToFind, startPos)) != null) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return this.searchText(paragraph, textToFind, startPos) != null;
|
||||
}
|
||||
|
||||
private void replaceTextSegment(XWPFParagraph paragraph, String textToFind, String replacement) {
|
||||
|
@ -992,7 +954,7 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
}
|
||||
|
||||
private void replaceTextSegment(XWPFParagraph paragraph, String textToFind, String replacement, Integer fontSize) {
|
||||
TextSegment foundTextSegment = null;
|
||||
TextSegment foundTextSegment;
|
||||
PositionInParagraph startPos = new PositionInParagraph(0, 0, 0);
|
||||
while((foundTextSegment = this.searchText(paragraph, textToFind, startPos)) != null) { // search all text segments having text to find
|
||||
|
||||
|
@ -1047,8 +1009,8 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
//CTR ctRun = rArray[runPos];
|
||||
CTR ctRun = runs.get(runPos).getCTR();
|
||||
XmlCursor c = ctRun.newCursor();
|
||||
try (c) {
|
||||
c.selectPath("./*");
|
||||
try {
|
||||
while (c.toNextSelection()) {
|
||||
XmlObject o = c.getObject();
|
||||
if (o instanceof CTText) {
|
||||
|
@ -1094,8 +1056,6 @@ public class WordBuilderImpl implements WordBuilder {
|
|||
candCharPos = 0;
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
c.dispose();
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
|
Loading…
Reference in New Issue