2017-02-25 03:56:22 +00:00
|
|
|
package com.bytezone.diskbrowser.visicalc;
|
|
|
|
|
2017-02-25 10:30:56 +00:00
|
|
|
import java.util.ArrayList;
|
2017-03-20 01:45:14 +00:00
|
|
|
import java.util.Iterator;
|
2017-02-25 10:30:56 +00:00
|
|
|
import java.util.List;
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// -----------------------------------------------------------------------------------//
|
|
|
|
abstract class AbstractValue implements Value
|
|
|
|
// -----------------------------------------------------------------------------------//
|
2017-02-25 03:56:22 +00:00
|
|
|
{
|
2017-03-24 11:02:52 +00:00
|
|
|
protected static final String FMT2 = "| %-9.9s : %-70.70s|%n";
|
|
|
|
protected static final String FMT4 = "| %-9.9s : %-50.50s %-8.8s %-10.10s|%n";
|
2017-03-25 21:58:10 +00:00
|
|
|
protected static final String FMT5 = "| %-9.9s : %-39.39s %-10.10s %-8.8s %-10.10s|%n";
|
2017-03-24 11:02:52 +00:00
|
|
|
protected static final String LINE = "+--------------------------------------------"
|
|
|
|
+ "---------------------------------------+";
|
2017-03-24 02:00:11 +00:00
|
|
|
|
2017-03-23 13:30:41 +00:00
|
|
|
protected final Cell cell;
|
|
|
|
protected final String fullText;
|
2017-03-24 02:00:11 +00:00
|
|
|
|
2017-03-26 09:16:36 +00:00
|
|
|
protected ValueType valueType; // = ValueType.NUMBER; // could be BOOLEAN
|
2017-02-25 10:30:56 +00:00
|
|
|
protected double value;
|
2017-03-23 13:30:41 +00:00
|
|
|
protected boolean bool;
|
2017-03-24 11:02:52 +00:00
|
|
|
|
2017-03-23 13:30:41 +00:00
|
|
|
protected ValueResult valueResult = ValueResult.VALID;
|
2020-02-02 10:17:49 +00:00
|
|
|
protected List<Value> values = new ArrayList<> ();
|
2017-02-25 03:56:22 +00:00
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
|
|
|
AbstractValue (Cell cell, String text)
|
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 03:56:22 +00:00
|
|
|
{
|
2017-03-23 13:30:41 +00:00
|
|
|
this.cell = cell;
|
|
|
|
this.fullText = text;
|
2017-02-25 03:56:22 +00:00
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 03:56:22 +00:00
|
|
|
@Override
|
2017-03-23 13:30:41 +00:00
|
|
|
public String getFullText ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 03:56:22 +00:00
|
|
|
{
|
2017-03-23 13:30:41 +00:00
|
|
|
return fullText;
|
2017-02-25 03:56:22 +00:00
|
|
|
}
|
2017-02-25 10:30:56 +00:00
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
@Override
|
|
|
|
public ValueType getValueType ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
{
|
|
|
|
return valueType;
|
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
@Override
|
2017-03-23 13:30:41 +00:00
|
|
|
public ValueResult getValueResult ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
{
|
2017-03-23 13:30:41 +00:00
|
|
|
return valueResult;
|
2017-02-25 10:30:56 +00:00
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
@Override
|
2017-03-23 13:30:41 +00:00
|
|
|
public boolean isValid ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-23 13:30:41 +00:00
|
|
|
{
|
|
|
|
return valueResult == ValueResult.VALID;
|
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-23 13:30:41 +00:00
|
|
|
@Override
|
|
|
|
public double getDouble ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
{
|
2017-03-25 08:02:02 +00:00
|
|
|
assert valueType == ValueType.NUMBER;
|
2017-02-25 10:30:56 +00:00
|
|
|
return value;
|
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-23 13:30:41 +00:00
|
|
|
@Override
|
|
|
|
public boolean getBoolean ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-23 13:30:41 +00:00
|
|
|
{
|
2017-03-25 08:02:02 +00:00
|
|
|
assert valueType == ValueType.BOOLEAN;
|
2017-03-23 13:30:41 +00:00
|
|
|
return bool;
|
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-24 04:09:24 +00:00
|
|
|
@Override
|
|
|
|
public int size ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-24 04:09:24 +00:00
|
|
|
{
|
|
|
|
return values.size ();
|
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
@Override
|
|
|
|
public String getText ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-25 10:30:56 +00:00
|
|
|
{
|
2017-03-25 21:58:10 +00:00
|
|
|
return valueResult == ValueResult.VALID ? getValueText (this) : valueResult + "";
|
2017-02-25 10:30:56 +00:00
|
|
|
}
|
2017-02-27 09:41:05 +00:00
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-28 20:39:26 +00:00
|
|
|
@Override
|
|
|
|
public void calculate ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-02-28 20:39:26 +00:00
|
|
|
{
|
2017-03-23 13:30:41 +00:00
|
|
|
// System.out.println ("calculate not overridden: " + cell);
|
2017-03-18 00:24:05 +00:00
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-25 08:02:02 +00:00
|
|
|
protected void attach (StringBuilder text, String title, String textValue, Value value)
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-25 08:02:02 +00:00
|
|
|
{
|
|
|
|
text.append (String.format (FMT4, title, textValue, value.getValueType (),
|
|
|
|
getValueText (value)));
|
|
|
|
for (Value v : value)
|
|
|
|
text.append (v);
|
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-24 02:00:11 +00:00
|
|
|
protected String getValueText (Value value)
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-24 02:00:11 +00:00
|
|
|
{
|
2017-03-26 09:16:36 +00:00
|
|
|
if (value.getValueType () == ValueType.NUMBER)
|
|
|
|
return value.getDouble () + "";
|
|
|
|
if (value.getValueType () == ValueType.BOOLEAN)
|
|
|
|
return value.getBoolean () ? "TRUE" : "FALSE";
|
|
|
|
return "??*??";
|
2017-03-24 02:00:11 +00:00
|
|
|
}
|
|
|
|
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-20 01:45:14 +00:00
|
|
|
@Override
|
|
|
|
public Iterator<Value> iterator ()
|
2020-02-10 11:05:40 +00:00
|
|
|
// ---------------------------------------------------------------------------------//
|
2017-03-20 01:45:14 +00:00
|
|
|
{
|
|
|
|
return values.iterator ();
|
|
|
|
}
|
2017-02-25 03:56:22 +00:00
|
|
|
}
|