2016-03-06 08:05:32 +00:00
|
|
|
package com.bytezone.diskbrowser.visicalc;
|
|
|
|
|
2016-03-07 04:37:01 +00:00
|
|
|
public class Min extends Function
|
2016-03-06 08:05:32 +00:00
|
|
|
{
|
2016-03-12 02:21:00 +00:00
|
|
|
private final Range range;
|
|
|
|
private boolean hasChecked;
|
|
|
|
private double min = Double.MAX_VALUE;
|
2016-03-06 08:05:32 +00:00
|
|
|
|
|
|
|
public Min (Sheet parent, String text)
|
|
|
|
{
|
2016-03-09 10:38:53 +00:00
|
|
|
super (parent, text);
|
2016-03-07 12:16:11 +00:00
|
|
|
range = getRange (text);
|
2016-03-06 08:05:32 +00:00
|
|
|
}
|
|
|
|
|
2016-03-12 02:21:00 +00:00
|
|
|
@Override
|
|
|
|
public boolean hasValue ()
|
|
|
|
{
|
|
|
|
if (!hasChecked)
|
|
|
|
calculate ();
|
|
|
|
return hasValue;
|
|
|
|
}
|
|
|
|
|
2016-03-07 04:37:01 +00:00
|
|
|
@Override
|
2016-03-06 08:05:32 +00:00
|
|
|
public double getValue ()
|
|
|
|
{
|
2016-03-12 02:21:00 +00:00
|
|
|
if (!hasChecked)
|
|
|
|
calculate ();
|
|
|
|
return hasValue ? min : 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
private void calculate ()
|
|
|
|
{
|
|
|
|
hasChecked = true;
|
2016-03-12 05:05:50 +00:00
|
|
|
hasValue = false;
|
|
|
|
|
2016-03-06 08:05:32 +00:00
|
|
|
for (Address address : range)
|
|
|
|
{
|
2016-03-12 02:21:00 +00:00
|
|
|
Cell cell = parent.getCell (address);
|
|
|
|
if (cell != null && cell.hasValue ())
|
|
|
|
{
|
|
|
|
hasValue = true;
|
|
|
|
double value = cell.getValue ();
|
|
|
|
if (value < min)
|
|
|
|
min = value;
|
|
|
|
}
|
2016-03-06 08:05:32 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|