1 /* 2 * FIEBDC 3 parser 3 * Copyright (C) 2014 DiSiD Technologies 4 * 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program. If not, see <http://www.gnu.org/copyleft/gpl.html>. 17 */ 18 19 package com.disid.fiebdc3; 20 21 import java.util.ArrayList; 22 import java.util.List; 23 24 /** 25 * Data of a measurement of a Fiebdc3 database. 26 * 27 * @author DiSiD Team 28 */ 29 public class Measurement { 30 31 String parentConcept; 32 33 String concept; 34 35 List<Integer> position = new ArrayList<Integer>(); 36 37 Float total; 38 39 List<MeasurementLine> measurements = new ArrayList<MeasurementLine>(); 40 41 String label; 42 43 Measurement() { 44 // Nothing to do 45 } 46 47 /** 48 * Spec definition:<br/> 49 * <i>POSICION: Posición del CONCEPTO_HIJO en la descomposición del 50 * CONCEPTO_PADRE, este dato permite identificar la medición cuando la 51 * descomposición del concepto padre incluye varios conceptos hijo con el 52 * mismo CODIGO, la numeración de las posiciones comenzará con el 1. 53 * 54 * El campo POSICION deberá especificarse siempre en intercambio de 55 * presupuestos cuando éste sea completo y estructurado, e indicará el 56 * camino completo de la medición descrita en la estructura del archivo. Por 57 * ejemplo 3 \ 5 \ 2, indicará la medición correspondiente al capítulo 3 del 58 * archivo; subcapítulo 5 del capítulo 3; y partida 2 del subcapítulo 5. En 59 * mediciones no estructuradas este campo es opcional.</i> 60 */ 61 public List<Integer> getPosition() { 62 return position; 63 } 64 65 public void addPosition(Integer position) { 66 this.position.add(position); 67 } 68 69 /** 70 * Spec definition:<br/> 71 * <i>MEDICION_TOTAL: Debe coincidir con el rendimiento del registro tipo 72 * '~D' correspondiente. Incorpora el sumatorio del producto de unidades, 73 * longitud, latitud y altura o el resultado de expresiones de cada línea, 74 * al leer este registro se recalculará este valor.</i> 75 */ 76 public Float getTotal() { 77 return total; 78 } 79 80 public void setTotal(Float total) { 81 this.total = total; 82 } 83 84 /** 85 * Returns the measurements of the work unit. 86 * 87 * @return the measurements of the work unit 88 */ 89 public List<MeasurementLine> getMeasurements() { 90 return measurements; 91 } 92 93 /** 94 * Adds a new measurement. 95 * 96 * @return the new added measurement 97 */ 98 public MeasurementLine addMeasurement() { 99 MeasurementLine measurement = new MeasurementLine(); 100 this.measurements.add(measurement); 101 return measurement; 102 } 103 104 /** 105 * Spec definition:<br/> 106 * <i>ETIQUETA: Es opcional, surge de la necesidad de transmitir un 107 * identificador de los conceptos (capítulos, subcapítulos o partidas). Este 108 * identificador lo imprimen, diversos programas, en los listados de 109 * mediciones o presupuesto de una Obra (por ejemplo, ‘2.10’, ‘A-27b’, 110 * ‘001001’,…); siendo único para cada concepto (capítulo, subcapítulo o 111 * partida) y, en general, diferente de la codificación de la base de datos 112 * empleada para confeccionar el presupuesto (El ‘CODIGO_HIJO’ muchas veces 113 * no aparece en los listados mencionados). </i> 114 */ 115 public String getLabel() { 116 return label; 117 } 118 119 public void setLabel(String label) { 120 this.label = label; 121 } 122 123 public String getParentConcept() { 124 return parentConcept; 125 } 126 127 public void setParentConcept(String parentConcept) { 128 this.parentConcept = parentConcept; 129 } 130 131 public String getConcept() { 132 return concept; 133 } 134 135 public void setConcept(String concept) { 136 this.concept = concept; 137 } 138 139 public MeasurementLine addLine() { 140 MeasurementLine line = new MeasurementLine(); 141 measurements.add(line); 142 return line; 143 } 144 145 @Override 146 public String toString() { 147 return "Measurement {" + super.toString() + ", Position: " + position 148 + ", Total: " + total + ", Label: " + label 149 + ", Measurements: " + measurements + "}"; 150 } 151 }