Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ else if (p.getPropertyType() == int.class && p.getWriteMethod() != null)
skipped++;
}

assertThat(skipped, equalTo(14));
assertThat(skipped, equalTo(15));

Security target = source.deepCopy();
assertThat(target.getUUID(), not(equalTo(source.getUUID())));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1280,6 +1280,8 @@ public class Messages extends NLS
public static String SecurityListFilterOnlyExchangeRates;
public static String SecurityListFilterOnlyInactive;
public static String SecurityListFilterOnlySecurities;
public static String SecurityListFilterOnlySecuritiesNonOpts;
public static String SecurityListFilterOnlySecuritiesOpts;
public static String SecurityMenuAddEvent;
public static String SecurityMenuAddNewSecurity;
public static String SecurityMenuAddNewSecurityDescription;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2554,6 +2554,10 @@ SecurityListFilterOnlyInactive = Only inactive instruments

SecurityListFilterOnlySecurities = Only securities

SecurityListFilterOnlySecuritiesNonOpts = Securities - non-options

SecurityListFilterOnlySecuritiesOpts = Securities - options

SecurityMenuAddEvent = Event...

SecurityMenuAddNewSecurity = Add new investment instrument
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.io.File;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
import java.util.regex.Pattern;
Expand Down Expand Up @@ -165,6 +166,8 @@ private class FilterDropDown extends DropDown implements IMenuListener
private final Predicate<Security> securityIsNotInactive = record -> !record.isRetired();
private final Predicate<Security> securityIsInactive = record -> record.isRetired();
private final Predicate<Security> onlySecurities = record -> !record.isExchangeRate();
private final Predicate<Security> onlyOpts = record -> record.isOption();
private final Predicate<Security> onlyNonOpts = record -> !record.isOption();
private final Predicate<Security> onlyExchangeRates = record -> record.isExchangeRate();
private final Predicate<Security> sharesNotZero = record -> getSharesHeld(getClient(), record) != 0;
private final Predicate<Security> sharesEqualZero = record -> getSharesHeld(getClient(), record) == 0;
Expand Down Expand Up @@ -199,6 +202,10 @@ else if (watchlist != null)
filter.add(limitPriceExceeded);
if ((savedFilters & (1 << 7)) != 0)
filter.add(securityIsInactive);
if ((savedFilters & (1 << 8)) != 0)
filter.add(onlyOpts);
if ((savedFilters & (1 << 9)) != 0)
filter.add(onlyNonOpts);

if (!filter.isEmpty())
setImage(Images.FILTER_ON);
Expand All @@ -224,6 +231,10 @@ else if (watchlist != null)
savedFilter += (1 << 6);
if (filter.contains(securityIsInactive))
savedFilter += (1 << 7);
if (filter.contains(onlyOpts))
savedFilter += (1 << 8);
if (filter.contains(onlyNonOpts))
savedFilter += (1 << 9);
if (watchlist != null)
preferenceStore.setValue(
this.getClass().getSimpleName() + "-filterSettings" + "-" + watchlist.getName(), //$NON-NLS-1$ //$NON-NLS-2$
Expand Down Expand Up @@ -294,6 +305,8 @@ public void menuAboutToShow(IMenuManager manager)
manager.add(createAction(Messages.SecurityListFilterOnlyInactive, securityIsInactive));
manager.add(new Separator());
manager.add(createAction(Messages.SecurityListFilterOnlySecurities, onlySecurities));
manager.add(createAction(" " + Messages.SecurityListFilterOnlySecuritiesOpts, onlyOpts));
manager.add(createAction(" " + Messages.SecurityListFilterOnlySecuritiesNonOpts, onlyNonOpts));
manager.add(createAction(Messages.SecurityListFilterOnlyExchangeRates, onlyExchangeRates));
manager.add(new Separator());
manager.add(createAction(Messages.SecurityFilterSharesHeldNotZero, sharesNotZero));
Expand All @@ -320,9 +333,13 @@ public void run()
if (!isChecked)
{
if (predicate == onlySecurities)
filter.remove(onlyExchangeRates);
filter.removeAll(Arrays.asList(onlyExchangeRates, onlyOpts, onlyNonOpts));
else if (predicate == onlyOpts)
filter.removeAll(Arrays.asList(onlyExchangeRates, onlySecurities, onlyNonOpts));
else if (predicate == onlyNonOpts)
filter.removeAll(Arrays.asList(onlyExchangeRates, onlySecurities, onlyOpts));
else if (predicate == onlyExchangeRates)
filter.remove(onlySecurities);
filter.removeAll(Arrays.asList(onlySecurities, onlyOpts, onlyNonOpts));
else if (predicate == sharesEqualZero)
filter.remove(sharesNotZero);
else if (predicate == sharesNotZero)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
*/
public final class Security implements Attributable, InvestmentVehicle
{
private static final Pattern OPTION_PATTERN = Pattern.compile("^([A-Z]+\\d*)(\\d{6})([CP])(\\d{8})$"); //$NON-NLS-1$

public static final class ByName implements Comparator<Security>, Serializable
{
private static final long serialVersionUID = 1L;
Expand Down Expand Up @@ -318,6 +320,20 @@ public boolean isExchangeRate()
return this.targetCurrencyCode != null;
}

/**
* Is this an option symbol?
*
* @return true for options, else false
*/
public boolean isOption()
{
if (this.tickerSymbol != null)
{
return OPTION_PATTERN.matcher(this.tickerSymbol).matches();
}
return false;
}

/**
* Returns ISIN, Ticker or WKN - whatever is available.
*/
Expand Down