dmolony-DiskBrowser/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java

137 lines
4.8 KiB
Java
Raw Normal View History

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
}