private NCList<V> subregions;
/**
- * Constructor
+ * Constructor given a list of ranges
*
* @param ranges
*/
}
/**
- * Constructo
+ * Constructor given a single range
*
* @param range
*/
build(ranges);
}
+ NCNode(V entry, NCList<V> newNCList)
+ {
+ region = entry;
+ subregions = newNCList;
+ // size = 1 + newNCList.size();
+ }
+
/**
* @param ranges
*/
return region.getEnd();
}
+ /**
+ * Formats the node as a bracketed list e.g.
+ *
+ * <pre>
+ * [1-100 [10-30 [10-20]], 15-30 [20-20]]
+ * </pre>
+ */
@Override
public String toString() {
StringBuilder sb = new StringBuilder(10 * size);
return sb.toString();
}
+ void prettyPrint(StringBuilder sb, int offset, int indent) {
+ for (int i = 0 ; i < offset ; i++) {
+ sb.append(" ");
+ }
+ sb.append(region.getBegin()).append("-").append(region.getEnd());
+ if (subregions != null)
+ {
+ sb.append(System.lineSeparator());
+ subregions.prettyPrint(sb, offset + 2, indent);
+ }
+ }
/**
* Add any ranges that overlap the from-to range to the result list
*
*
* @param entry
*/
- public synchronized void add(V entry)
+ synchronized void add(V entry)
{
if (entry.getBegin() < region.getBegin() || entry.getEnd() > region.getEnd()) {
throw new IllegalArgumentException(String.format(
subregions.add(entry);
}
}
+
+ /**
+ * Answers true if the data held satisfy the rules of construction of an
+ * NCList, else false.
+ *
+ * @return
+ */
+ boolean isValid()
+ {
+ if (subregions == null)
+ {
+ return true;
+ }
+ return subregions.isValid(getStart(), getEnd());
+ }
}