View Javadoc

1   /* This file is part of the project "Hilbert II" - http://www.qedeq.org" target="alexandria_uri">http://www.qedeq.org
2    *
3    * Copyright 2000-2014,  Michael Meyling <mime@qedeq.org>.
4    *
5    * "Hilbert II" is free software; you can redistribute
6    * it and/or modify it under the terms of the GNU General Public
7    * License as published by the Free Software Foundation; either
8    * version 2 of the License, or (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  
16  package org.qedeq.kernel.bo.service.unicode;
17  
18  
19  /**
20   * Contains printing data for a formal proof line.
21   *
22   * @author  Michael Meyling
23   */
24  public class ProofLineData {
25  
26      /** Current Label of formal proof line. */
27      private String lineLabel;
28  
29      /** String representation of formal proof line formula. */
30      private String[] formula;
31  
32      /** String representation of formal proof line reason. */
33      private String[] reason;
34  
35      /**
36       * Constructs empty container.
37       */
38      public ProofLineData() {
39          init();
40      }
41  
42      /**
43       * Construct new proof line data.
44       *
45       * @param   lineLabel   Proof line label.
46       * @param   formula     Formula strings.
47       * @param   reason      Reason strings.
48       */
49      public ProofLineData(final String lineLabel, final String[] formula, final String[] reason) {
50          this.lineLabel = lineLabel;
51          this.formula = formula;
52          this.reason = reason;
53      }
54  
55      /**
56       * Copy constructor.
57       *
58       * @param   lineData    Existing object.
59       */
60      public ProofLineData(final ProofLineData lineData) {
61          this.lineLabel = lineData.lineLabel;
62          this.formula = new String[lineData.formula.length];
63          System.arraycopy(lineData.formula, 0, this.formula, 0, lineData.formula.length);
64          this.reason = new String[lineData.reason.length];
65          System.arraycopy(lineData.reason, 0, this.reason, 0, lineData.reason.length);
66      }
67  
68      /**
69       * Empty data.
70       */
71      public void init() {
72          this.lineLabel = "";
73          this.formula = new String[0];
74          this.reason = new String[0];
75      }
76  
77      /**
78       * Exists formula data or reason data?
79       *
80       * @return  Is there any reason or formula data?
81       */
82      public boolean containsData() {
83          return (0 != lines());
84      }
85  
86      /**
87       * How many lines do we have? This is maximum of formula lines and reason lines.
88       *
89       * @return  Number of lines.
90       */
91      public int lines() {
92          return Math.max(getFormula().length, getReason().length);
93      }
94  
95      /**
96       * Get label for proof line.
97       *
98       * @return  Proof line label.
99       */
100     public String getLineLabel() {
101         return lineLabel;
102     }
103 
104     /**
105      * Set label for proof line.
106      *
107      * @param   lineLabel   Proof line label.
108      */
109     public void setLineLabel(final String lineLabel) {
110         this.lineLabel = lineLabel;
111     }
112 
113     /**
114      * Get proof line formula.
115      *
116      * @return  Proof line formula.
117      */
118     public String[] getFormula() {
119         return formula;
120     }
121 
122     /**
123      * Set proof line formula.
124      *
125      * @param  formula  Proof line formula.
126      */
127     public void setFormula(final String[] formula) {
128         this.formula = formula;
129     }
130 
131     /**
132      * Get derive reason for proof line. Already formatted in several lines.
133      *
134      * @return  Reason for getting this proof line.
135      */
136     public String[] getReason() {
137         return reason;
138     }
139 
140     /**
141      * Set derive reason for proof line.
142      *
143      * @param  reason   Reason for getting this proof line. Must be already formatted in serveral
144      *                  lines.
145      */
146     public void setReason(final String[] reason) {
147         this.reason = reason;
148     }
149 
150 }