diff options
author | Alexander Kurtakov | 2013-01-27 13:36:47 +0000 |
---|---|---|
committer | Camilo Bernal | 2013-01-28 15:29:26 +0000 |
commit | 89baa1f5d3be3fb87f51f81b6bf1947ce0a60267 (patch) | |
tree | 84b8af21fba7e122152d35b1485fe003fc49bb14 /rpm | |
parent | 4eac88e2286dd280972b09683b628aa407a2efde (diff) | |
download | org.eclipse.linuxtools-89baa1f5d3be3fb87f51f81b6bf1947ce0a60267.tar.gz org.eclipse.linuxtools-89baa1f5d3be3fb87f51f81b6bf1947ce0a60267.tar.xz org.eclipse.linuxtools-89baa1f5d3be3fb87f51f81b6bf1947ce0a60267.zip |
Make sure we don't try to read rpm section if there is none.
Formatting, not converting to array and reducing parameters has been
done too.
Change-Id: I9acecca38304a66c0e4d3f93e19d187556385d0d
Reviewed-on: https://git.eclipse.org/r/9950
Tested-by: Hudson CI
Reviewed-by: Camilo Bernal <cabernal@redhat.com>
IP-Clean: Camilo Bernal <cabernal@redhat.com>
Tested-by: Camilo Bernal <cabernal@redhat.com>
Diffstat (limited to 'rpm')
-rw-r--r-- | rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/SpecfileFoldingStructureProvider.java | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/SpecfileFoldingStructureProvider.java b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/SpecfileFoldingStructureProvider.java index e3fdda3147..ccf9d60e69 100644 --- a/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/SpecfileFoldingStructureProvider.java +++ b/rpm/org.eclipse.linuxtools.rpm.ui.editor/src/org/eclipse/linuxtools/internal/rpm/ui/editor/SpecfileFoldingStructureProvider.java @@ -33,7 +33,7 @@ import org.eclipse.linuxtools.rpm.ui.editor.parser.SpecfileElement; public class SpecfileFoldingStructureProvider { - + private static class ElementByLineNbrComparator implements Comparator<SpecfileElement> { public int compare(SpecfileElement element1, SpecfileElement element2) { Integer lineNbr1 = element1.getLineNumber(); @@ -41,7 +41,7 @@ public class SpecfileFoldingStructureProvider { return lineNbr1.compareTo(lineNbr2); } } - + private static final Annotation[] EMPTY = new Annotation[] {}; private SpecfileEditor sEditor; private IDocument sDocument; @@ -62,8 +62,9 @@ public class SpecfileFoldingStructureProvider { public void updateFoldingRegions() { ProjectionAnnotationModel model = (ProjectionAnnotationModel) sEditor .getAdapter(ProjectionAnnotationModel.class); - if (model != null) + if (model != null) { updateFoldingRegions(model); + } } void updateFoldingRegions(ProjectionAnnotationModel model) { @@ -71,14 +72,16 @@ public class SpecfileFoldingStructureProvider { Annotation[] deletions = computeDifferences(model, structure); Map<Annotation,Position> additions = computeAdditions(structure); if ((deletions.length != 0 || !additions.isEmpty()) - && (sProgressMonitor == null || !sProgressMonitor.isCanceled())) + && (sProgressMonitor == null || !sProgressMonitor.isCanceled())) { model.modifyAnnotations(deletions, additions, EMPTY); + } } private Map<Annotation,Position> computeAdditions(Set<Position> currentRegions) { Map<Annotation,Position> additionsMap = new HashMap<Annotation,Position>(); - for (Position position: currentRegions) + for (Position position: currentRegions) { additionsMap.put(new ProjectionAnnotation(), position); + } return additionsMap; } @@ -89,38 +92,40 @@ public class SpecfileFoldingStructureProvider { Annotation annotation = iter.next(); if (annotation instanceof ProjectionAnnotation) { Position position = model.getPosition(annotation); - if (current.contains(position)) + if (current.contains(position)) { current.remove(position); - else + } else { deletions.add(annotation); + } } } return deletions.toArray(new Annotation[deletions.size()]); } private Set<Position> createFoldingStructure(Specfile specfile) { - Set<Position> set = new HashSet<Position>(); - List<SpecfileElement> elements = new ArrayList<SpecfileElement>(); elements.addAll(specfile.getSections()); elements.addAll(specfile.getComplexSections()); Collections.sort(elements, new ElementByLineNbrComparator()); - addFoldingRegions(set, elements.toArray()); - return set; + return addFoldingRegions(elements); } - private void addFoldingRegions(Set<Position> regions, Object[] elements) { + private Set<Position> addFoldingRegions(List<SpecfileElement> elements) { + Set<Position> regions = new HashSet<Position>(); // add folding on the preamble section - SpecfileElement element = (SpecfileElement) elements[0]; - Position position = new Position(0, element.getLineStartPosition() - 1); - regions.add(position); + Position position; + if (elements.size() > 0) { + SpecfileElement element = elements.get(0); + position = new Position(0, element.getLineStartPosition() - 1); + regions.add(position); + } - for (int i = 0; i < elements.length; i++) { - SpecfileElement startElement = (SpecfileElement) elements[i]; + for (int i = 0; i < elements.size(); i++) { + SpecfileElement startElement = elements.get(i); int offsetPos = startElement.getLineStartPosition(); int lenghtPos; - if (i < elements.length -1) { - SpecfileElement endElement = (SpecfileElement) elements[i+1]; + if (i < elements.size() -1) { + SpecfileElement endElement = elements.get(i+1); lenghtPos = endElement.getLineStartPosition() - startElement.getLineStartPosition() - 1; } else { lenghtPos = sDocument.getLength() - startElement.getLineStartPosition(); @@ -128,5 +133,6 @@ public class SpecfileFoldingStructureProvider { position = new Position(offsetPos, lenghtPos); regions.add(position); } + return regions; } } |