Skip to content

Commit af81935

Browse files
Fix IndexOutOfBound by Diff View (#1814)
1 parent 6f5edff commit af81935

File tree

3 files changed

+38
-11
lines changed

3 files changed

+38
-11
lines changed

java/bundles/org.eclipse.set.feature.table/src/org/eclipse/set/feature/table/overview/TableOverviewPart.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -216,9 +216,16 @@ private void calculateAllMissingTables(final IProgressMonitor monitor) {
216216
final TableType tableType = getModelSession().isSingleState()
217217
? TableType.SINGLE
218218
: TableType.DIFF;
219+
if (tableType == TableType.DIFF) {
220+
// We don't need create DIFF instance for Errors detecting
221+
tableService.transformTables(monitor, getModelSession(),
222+
new HashSet<>(missingTables), TableType.INITIAL,
223+
controlAreaIds);
224+
tableService.transformTables(monitor, getModelSession(),
225+
new HashSet<>(missingTables), TableType.FINAL,
226+
controlAreaIds);
227+
}
219228

220-
tableService.transformTables(monitor, getModelSession(),
221-
new HashSet<>(missingTables), tableType, controlAreaIds);
222229
}
223230

224231
private void openAllTablesWithErrors() {

java/bundles/org.eclipse.set.model.tablemodel.extensions/src/org/eclipse/set/model/tablemodel/extensions/TableExtensions.xtend

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,12 @@ import java.nio.file.Path
1313
import java.util.Collections
1414
import java.util.List
1515
import org.eclipse.emf.common.util.URI
16+
import org.eclipse.emf.ecore.EObject
1617
import org.eclipse.emf.ecore.resource.Resource
1718
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl
19+
import org.eclipse.emf.ecore.util.EcoreUtil
1820
import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl
21+
import org.eclipse.set.model.planpro.Basisobjekte.Bearbeitungsvermerk
1922
import org.eclipse.set.model.planpro.Basisobjekte.Ur_Objekt
2023
import org.eclipse.set.model.tablemodel.ColumnDescriptor
2124
import org.eclipse.set.model.tablemodel.CompareFootnoteContainer
@@ -31,17 +34,16 @@ import static extension org.eclipse.set.model.tablemodel.extensions.ColumnDescri
3134
import static extension org.eclipse.set.model.tablemodel.extensions.RowGroupExtensions.*
3235
import static extension org.eclipse.set.model.tablemodel.extensions.TableContentExtensions.*
3336
import static extension org.eclipse.set.model.tablemodel.extensions.TableRowExtensions.*
34-
import static extension org.eclipse.set.utils.StringExtensions.*
37+
import static extension org.eclipse.set.ppmodel.extensions.EObjectExtensions.*
3538
import static extension org.eclipse.set.ppmodel.extensions.utils.IterableExtensions.*
36-
import org.eclipse.emf.ecore.EObject
37-
import org.eclipse.emf.ecore.util.EcoreUtil
38-
import org.eclipse.set.model.planpro.Basisobjekte.Bearbeitungsvermerk
39+
import static extension org.eclipse.set.utils.StringExtensions.*
3940

4041
/**
4142
* Extensions for {@link Table}.
4243
*/
4344
class TableExtensions {
4445
public static val String FOOTNOTE_SEPARATOR = "; "
46+
4547
/**
4648
* @param columnLabels the column labels
4749
*
@@ -282,8 +284,10 @@ class TableExtensions {
282284
static def TableRow getMatchingRow(Table table, TableRow row) {
283285
val group = row.group
284286
val rowIndex = group.rows.indexOf(row)
285-
return table.getGroupByLeadingObject(group.leadingObject,
286-
group.leadingObjectIndex)?.rows?.get(rowIndex)
287+
table.getGroupByLeadingObject(group.leadingObject,
288+
group.leadingObjectIndex)?.rows?.
289+
getIndexOutBoundableObject(rowIndex)?.orElse(null)
290+
287291
}
288292

289293
/**
@@ -477,7 +481,7 @@ class TableExtensions {
477481
if (fc instanceof SimpleFootnoteContainer) {
478482
val remarks = fc.footnotes.map[getFootnoteInfo(table, it)].
479483
filterNull
480-
484+
481485
return remarks.isEmpty ||
482486
remarks.map[toText].join(", ").length < maxCharInCell
483487
}
@@ -501,8 +505,9 @@ class TableExtensions {
501505
case 1: {
502506
val remarks = notEmptyContainer.firstOrNull.map[toText].
503507
filterNull
504-
return remarks.isEmpty ||
505-
remarks.join(FOOTNOTE_SEPARATOR).length < maxCharInCell
508+
return remarks.isEmpty ||
509+
remarks.join(FOOTNOTE_SEPARATOR).length <
510+
maxCharInCell
506511
}
507512
default:
508513
false

java/bundles/org.eclipse.set.ppmodel.extensions/src/org/eclipse/set/ppmodel/extensions/EObjectExtensions.xtend

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99
package org.eclipse.set.ppmodel.extensions
1010

11+
import java.util.List
1112
import java.util.Optional
1213
import org.eclipse.emf.ecore.EObject
1314
import org.eclipse.emf.ecore.EStructuralFeature
@@ -129,7 +130,21 @@ class EObjectExtensions {
129130
try {
130131
return Optional.ofNullable(func.apply(t))
131132
} catch(NullPointerException e) {
133+
logger.debug(e.message)
132134
return Optional.empty
133135
}
134136
}
137+
138+
static def <T> Optional<T> getIndexOutBoundableObject(List<T> t, int index) {
139+
try {
140+
if (t.isNullOrEmpty) {
141+
return Optional.empty
142+
}
143+
return Optional.ofNullable(t.get(index))
144+
} catch (IndexOutOfBoundsException e) {
145+
logger.debug(e.message)
146+
return Optional.empty
147+
}
148+
149+
}
135150
}

0 commit comments

Comments
 (0)