X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Fjalview%2Fdatamodel%2Ffeatures%2FNCNode.java;h=b9917501717f0379283545fc67fe84ebe32a8bd8;hb=274dcb86a3d7ab44e051325b7bd38c5a138bf087;hp=5fb2d0d9f6e87cc77736251d8eb0cb1d6035fb9f;hpb=7f4b42c9b73c4e5e101aa2bb390af2d1df9a0f0a;p=jalview.git diff --git a/src/jalview/datamodel/features/NCNode.java b/src/jalview/datamodel/features/NCNode.java index 5fb2d0d..b991750 100644 --- a/src/jalview/datamodel/features/NCNode.java +++ b/src/jalview/datamodel/features/NCNode.java @@ -1,5 +1,27 @@ +/* + * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$) + * Copyright (C) $$Year-Rel$$ The Jalview Authors + * + * This file is part of Jalview. + * + * Jalview is free software: you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation, either version 3 + * of the License, or (at your option) any later version. + * + * Jalview is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Jalview. If not, see . + * The Jalview Authors are detailed in the 'AUTHORS' file. + */ package jalview.datamodel.features; +import jalview.datamodel.ContiguousI; + import java.util.ArrayList; import java.util.List; @@ -40,7 +62,7 @@ class NCNode implements ContiguousI */ NCNode(V range) { - List ranges = new ArrayList(); + List ranges = new ArrayList<>(); ranges.add(range); build(ranges); } @@ -49,7 +71,7 @@ class NCNode implements ContiguousI { region = entry; subregions = newNCList; - size = 1 + newNCList.getSize(); + size = 1 + newNCList.size(); } /** @@ -150,6 +172,7 @@ class NCNode implements ContiguousI { subregions.add(entry); } + size++; } /** @@ -227,4 +250,26 @@ class NCNode implements ContiguousI { return subregions; } + + /** + * Nulls the subregion reference if it is empty (after a delete entry + * operation) + */ + void deleteSubRegionsIfEmpty() + { + if (subregions != null && subregions.size() == 0) + { + subregions = null; + } + } + + /** + * Answers the (deep) size of this node i.e. the number of ranges it models + * + * @return + */ + int size() + { + return size; + } }