/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright 2008 jOpenDocument, by ILM Informatique. All rights reserved. * * The contents of this file are subject to the terms of the GNU * General Public License Version 3 only ("GPL"). * You may not use this file except in compliance with the License. * You can obtain a copy of the License at http://www.gnu.org/licenses/gpl-3.0.html * See the License for the specific language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each file. * */ package org.jopendocument.model.table; import java.util.ArrayList; import java.util.List; /** * */ public class TableTable { // Une colonne ou ligne repeated est dupliquée dans la liste ArrayList<TableTableColumn> columns = new ArrayList<>(); private int printStartCol = 0; private int printStartRow = 0; private int printStopCol = 0; private int printStopRow = 0; ArrayList<TableTableRow> rows = new ArrayList<>(); public void addColumn(final TableTableColumn col) { for (int i = 0; i < col.getTableNumberColumnsRepeated(); i++) { this.columns.add(col); } col.setTable(this); } public void addRow(final TableTableRow r) { for (int i = 0; i < r.getTableNumberRowsRepeated(); i++) { this.rows.add(r); } } public int getPrintStartCol() { return this.printStartCol; } public int getPrintStartRow() { return this.printStartRow; } public int getPrintStopCol() { return this.printStopCol; } public int getPrintStopRow() { return this.printStopRow; } /** * Return all the rows (duplicated if repeated) */ public List<TableTableRow> getRows() { return this.rows; } /** * Sets the value of the tablePrintRanges property. * * @param value allowed object is {@link String } * */ public void setTablePrintRanges(final String value) { if (value == null || !value.contains(":")) { throw new IllegalArgumentException("ranges is null"); } //this.tablePrintRanges = value; final int s = value.indexOf(':'); final String l = value.substring(0, s); final String r = value.substring(s + 1); String vl = l.substring(l.indexOf('.') + 1); String vr = r.substring(r.indexOf('.') + 1); vl = removeDollars(vl); vr = removeDollars(vr); { int j = 0; for (int i = vl.length() - 1; i >= 0; i--) { final int c = vl.charAt(i); if (Character.isLetter(c)) { final int val = c - 'A' + 1; this.printStartCol += val * Math.pow(26, j); j++; } else { this.printStartRow = i; } } final String substring = vl.substring(j); this.printStartRow = Integer.valueOf(substring) - 1; this.printStartCol--; } { int j = 0; for (int i = vr.length() - 1; i >= 0; i--) { final int c = vr.charAt(i); if (Character.isLetter(c)) { final int val = c - 'A' + 1; this.printStopCol += val * Math.pow(26, j); j++; } else { this.printStopRow = i; } } final String substring = vr.substring(j); this.printStopRow = Integer.valueOf(substring) - 1; this.printStopCol--; } } private final String removeDollars(String s) { final int length = s.length(); final StringBuilder t = new StringBuilder(length); for (int i = 0; i < length; i++) { char c = s.charAt(i); if (c != '$') { t.append(c); } } return t.toString(); } @Override public String toString() { return "TableTable: print:" + this.getPrintStartCol() + "," + this.getPrintStartRow() + " : " + this.getPrintStopCol() + "," + this.getPrintStopRow(); } }