Skip to content

Commit

Permalink
Merge pull request #112 from mygreen/topic/fix_notwork_save
Browse files Browse the repository at this point in the history
@XlsColumn  などのアノテーションをメソッドにを付与しているとき処理対象外となる事象を修正
  • Loading branch information
mygreen committed Feb 13, 2021
2 parents 8dd1348 + 7abc36e commit 8bc84d2
Show file tree
Hide file tree
Showing 28 changed files with 1,796 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,9 @@ public boolean equals(final Object obj) {

/**
* 読み込み可能かどうか判定します。
* フィールドの値を参照可能かどうか判定します。
* <p>シートを読み込み時にセルの値をBeanに設定可能かの判定に使用します。</p>
*
* @return フィールドまたはgetterメソッドが存在する場合にtrueを返します。
*/
public boolean isReadable() {
Expand All @@ -175,6 +178,8 @@ public boolean isReadable() {

/**
* 書き込み可能かどうか判定します。
* <p>シートを書き込み時にBeanの値をセルに設定可能かの判定に使用します。</p>
*
* @return フィールドまたはsetterメソッドが存在する場合にtrueを返します。
*/
public boolean isWritable() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -223,7 +223,7 @@ private static void checkLoadingNestedRecordClass(final Class<?> recordClass, fi

final List<FieldAccessor> nestedProperties = FieldAccessorUtils.getPropertiesWithAnnotation(recordClass, reader, XlsNestedRecords.class)
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());

for(FieldAccessor property : nestedProperties) {
Expand Down Expand Up @@ -306,7 +306,7 @@ private static void checkSavingNestedRecordClass(final Class<?> recordClass, fin

final List<FieldAccessor> nestedProperties = FieldAccessorUtils.getPropertiesWithAnnotation(recordClass, reader, XlsNestedRecords.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

for(FieldAccessor property : nestedProperties) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,11 @@ public class ArrayCellsProcessor extends AbstractFieldProcessor<XlsArrayCells> {
public void loadProcess(final Sheet sheet, final Object beansObj, final XlsArrayCells anno, final FieldAccessor accessor,
final Configuration config, final LoadingWorkObject work) throws XlsMapperException {

if(!accessor.isWritable()) {
// セルの値を書き込むメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isLoadCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -153,6 +158,15 @@ public void saveProcess(final Sheet sheet, final Object beansObj, final XlsArray
final FieldAccessor accessor, final Configuration config, final SavingWorkObject work)
throws XlsMapperException {

if(!accessor.isReadable()) {
// セルの値を参照するメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isSaveCase(anno.cases())) {
return;
}

final Class<?> clazz = accessor.getType();
final Object result = accessor.getValue(beansObj);
if(Collection.class.isAssignableFrom(clazz)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,11 @@ public class CellProcessor extends AbstractFieldProcessor<XlsCell> {
public void loadProcess(final Sheet sheet, final Object beansObj, final XlsCell anno, final FieldAccessor accessor,
final Configuration config, final LoadingWorkObject work) throws XlsMapperException {

if(!accessor.isWritable()) {
// セルの値を書き込むメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isLoadCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -115,6 +120,11 @@ private CellPosition getCellPosition(final FieldAccessor accessor, final XlsCell
public void saveProcess(final Sheet sheet, final Object targetObj, final XlsCell anno, final FieldAccessor accessor,
final Configuration config, final SavingWorkObject work) throws XlsMapperException {

if(!accessor.isReadable()) {
// セルの値を参照するメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isSaveCase(anno.cases())) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ public class CommentProcessor extends AbstractFieldProcessor<XlsComment> {
public void loadProcess(final Sheet sheet, final Object beansObj, final XlsComment anno, final FieldAccessor accessor,
final Configuration config, final LoadingWorkObject work) throws XlsMapperException {

if(!accessor.isWritable()) {
// セルの値を書き込むメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isLoadCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -118,6 +123,11 @@ private CellPosition getCellPosition(final FieldAccessor accessor, final XlsComm
public void saveProcess(final Sheet sheet, final Object targetObj, final XlsComment anno, final FieldAccessor accessor,
final Configuration config, final SavingWorkObject work) throws XlsMapperException {

if(!accessor.isReadable()) {
// セルの値を参照するメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isSaveCase(anno.cases())) {
return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,11 @@ public class HorizontalRecordsProcessor extends AbstractFieldProcessor<XlsHorizo
public void loadProcess(final Sheet sheet, final Object beansObj, final XlsHorizontalRecords anno, final FieldAccessor accessor,
final Configuration config, final LoadingWorkObject work) throws XlsMapperException {

if(!accessor.isWritable()) {
// セルの値を書き込むメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isLoadCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -316,7 +321,7 @@ private List<?> loadRecords(final Sheet sheet, final List<RecordHeader> headers,
return FieldAccessorUtils.getColumnPropertiesByName(
record.getClass(), work.getAnnoReader(), config, key)
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());
});

Expand Down Expand Up @@ -525,7 +530,7 @@ private int getStartHeaderIndexForLoading(final List<RecordHeader> headers, Clas
final List<FieldAccessor> propeties = FieldAccessorUtils.getColumnPropertiesByName(
recordClass, annoReader, config, headerInfo.getLabel())
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());

if(!propeties.isEmpty()) {
Expand All @@ -543,7 +548,7 @@ private void loadMapColumns(final Sheet sheet, final List<RecordHeader> headers,
final List<FieldAccessor> mapProperties = FieldAccessorUtils.getPropertiesWithAnnotation(
recordClass, work.getAnnoReader(), XlsMapColumns.class)
.stream()
.filter(f -> f.isReadable())
.filter(f -> f.isWritable())
.collect(Collectors.toList());

for(FieldAccessor property : mapProperties) {
Expand Down Expand Up @@ -621,7 +626,10 @@ private void loadArrayColumns(final Sheet sheet, final List<RecordHeader> header

// アノテーション「@XlsArrayColumns」の属性「columnName」と一致するプロパティを取得する。
final List<FieldAccessor> arrayProperties = FieldAccessorUtils.getArrayColumnsPropertiesByName(
recordClass, work.getAnnoReader(), config, headerInfo.getLabel());
recordClass, work.getAnnoReader(), config, headerInfo.getLabel())
.stream()
.filter(f -> f.isWritable())
.collect(Collectors.toList());

if(arrayProperties.isEmpty()) {
continue;
Expand Down Expand Up @@ -703,7 +711,7 @@ private int loadNestedRecords(final Sheet sheet, final List<RecordHeader> header
final List<FieldAccessor> nestedProperties = FieldAccessorUtils.getPropertiesWithAnnotation(
record.getClass(), work.getAnnoReader(), XlsNestedRecords.class)
.stream()
.filter(f -> f.isReadable())
.filter(f -> f.isWritable())
.collect(Collectors.toList());

for(FieldAccessor property : nestedProperties) {
Expand Down Expand Up @@ -812,6 +820,11 @@ private boolean isAvailabledRecord(final Optional<Method> ignoreMethod, final Ob
public void saveProcess(final Sheet sheet, final Object beansObj, final XlsHorizontalRecords anno,
final FieldAccessor accessor, final Configuration config, final SavingWorkObject work) throws XlsMapperException {

if(!accessor.isReadable()) {
// セルの値を参照するメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isSaveCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -1117,7 +1130,7 @@ record = null;
return FieldAccessorUtils.getColumnPropertiesByName(
record.getClass(), work.getAnnoReader(), config, key)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());
});

Expand Down Expand Up @@ -1336,7 +1349,7 @@ private int getStartHeaderIndexForSaving(final List<RecordHeader> headers, Class
final List<FieldAccessor> propeties = FieldAccessorUtils.getColumnPropertiesByName(
recordClass, annoReader, config, headerInfo.getLabel())
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());
if(!propeties.isEmpty()) {
return i;
Expand Down Expand Up @@ -1414,7 +1427,7 @@ private void saveMapColumns(final Sheet sheet, final List<RecordHeader> headers,
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
recordClass, work.getAnnoReader(), XlsMapColumns.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

for(FieldAccessor property : properties) {
Expand Down Expand Up @@ -1524,7 +1537,11 @@ private void saveArrayColumns(final Sheet sheet, final List<RecordHeader> header

// アノテーション「@XlsArrayColumns」の属性「columnName」と一致するプロパティを取得する。
final List<FieldAccessor> arrayProperties = FieldAccessorUtils.getArrayColumnsPropertiesByName(
recordClass, work.getAnnoReader(), config, headerInfo.getLabel());
recordClass, work.getAnnoReader(), config, headerInfo.getLabel())
.stream()
.filter(f -> f.isReadable())
.collect(Collectors.toList());
;

if(arrayProperties.isEmpty()) {
continue;
Expand Down Expand Up @@ -1692,8 +1709,9 @@ private int saveNestedRecords(final Sheet sheet, final List<RecordHeader> header
final List<FieldAccessor> nestedProperties = FieldAccessorUtils.getPropertiesWithAnnotation(
record.getClass(), work.getAnnoReader(), XlsNestedRecords.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

for(FieldAccessor property : nestedProperties) {

final XlsNestedRecords nestedAnno = property.getAnnotationNullable(XlsNestedRecords.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,11 @@ public class IterateTablesProcessor extends AbstractFieldProcessor<XlsIterateTab
public void loadProcess(final Sheet sheet, final Object beansObj, final XlsIterateTables anno,
final FieldAccessor accessor, final Configuration config, final LoadingWorkObject work) throws XlsMapperException {

if(!accessor.isWritable()) {
// セルの値を書き込むメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isLoadCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -232,7 +237,7 @@ private void loadSingleLabelledComment(final Sheet sheet, final Object tableObj,
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsLabelledComment.class)
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());

for(FieldAccessor property : properties) {
Expand Down Expand Up @@ -277,7 +282,7 @@ private void loadSingleLabelledCell(final Sheet sheet, final Object tableObj,
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsLabelledCell.class)
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());

for(FieldAccessor property : properties) {
Expand Down Expand Up @@ -322,7 +327,7 @@ private void loadSingleLabelledArrayCell(final Sheet sheet, final Object tableOb
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsLabelledArrayCells.class)
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());

for(FieldAccessor property : properties) {
Expand Down Expand Up @@ -368,7 +373,7 @@ private void loadMultipleHorizontalTableCell(final Sheet sheet, final Object tab
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsHorizontalRecords.class)
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());

final List<FieldAccessorProxy> accessorProxies = new ArrayList<>();
Expand Down Expand Up @@ -408,7 +413,7 @@ private void loadMultipleVerticalTableCell(final Sheet sheet, final Object table
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsVerticalRecords.class)
.stream()
.filter(p -> p.isReadable())
.filter(p -> p.isWritable())
.collect(Collectors.toList());

final List<FieldAccessorProxy> accessorProxies = new ArrayList<>();
Expand All @@ -435,6 +440,11 @@ private void loadMultipleVerticalTableCell(final Sheet sheet, final Object table
public void saveProcess(final Sheet sheet, final Object beansObj, final XlsIterateTables anno, final FieldAccessor accessor,
final Configuration config, final SavingWorkObject work) throws XlsMapperException {

if(!accessor.isReadable()) {
// セルの値を参照するメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isSaveCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -568,7 +578,7 @@ private void saveSingleLabelledComment(final Sheet sheet, final Object tableObj,
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsLabelledComment.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

for(FieldAccessor property : properties) {
Expand Down Expand Up @@ -607,7 +617,7 @@ private void saveSingleLabelledCell(final Sheet sheet, final Object tableObj, fi
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsLabelledCell.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

for(FieldAccessor property : properties) {
Expand Down Expand Up @@ -646,7 +656,7 @@ private void saveSingleLabelledArrayCell(final Sheet sheet, final Object tableOb
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsLabelledArrayCells.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

for(FieldAccessor property : properties) {
Expand Down Expand Up @@ -693,7 +703,7 @@ private void saveMultipleHorizontalTableCell(final Sheet sheet, final Object tab
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsHorizontalRecords.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

final List<FieldAccessorProxy> accessorProxies = new ArrayList<>();
Expand Down Expand Up @@ -735,7 +745,7 @@ private void saveMultipleVerticalTableCell(final Sheet sheet, final Object table
final List<FieldAccessor> properties = FieldAccessorUtils.getPropertiesWithAnnotation(
tableObj.getClass(), work.getAnnoReader(), XlsVerticalRecords.class)
.stream()
.filter(p -> p.isWritable())
.filter(p -> p.isReadable())
.collect(Collectors.toList());

final List<FieldAccessorProxy> accessorProxies = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,11 @@ public void loadProcess(final Sheet sheet, final Object beansObj, final XlsLabel
final FieldAccessor accessor, final Configuration config, final LoadingWorkObject work)
throws XlsMapperException {

if(!accessor.isWritable()) {
// セルの値を書き込むメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isLoadCase(anno.cases())) {
return;
}
Expand Down Expand Up @@ -148,6 +153,11 @@ public void saveProcess(final Sheet sheet, final Object beansObj, final XlsLabel
final FieldAccessor accessor, final Configuration config, final SavingWorkObject work)
throws XlsMapperException {

if(!accessor.isReadable()) {
// セルの値を参照するメソッド/フィールドがない場合はスキップ
return;
}

if(!Utils.isSaveCase(anno.cases())) {
return;
}
Expand Down

0 comments on commit 8bc84d2

Please sign in to comment.