Fix transient fields on OfferForJson. Dont dump json in iteration but after.

This commit is contained in:
Manfred Karrer 2017-06-14 23:46:57 +02:00
parent 3f164e7923
commit 93eecd17e4
2 changed files with 18 additions and 41 deletions

View File

@ -1,5 +1,6 @@
package io.bisq.core.offer;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.bisq.common.locale.CurrencyUtil;
import io.bisq.common.locale.Res;
import io.bisq.common.monetary.Price;
@ -43,6 +44,13 @@ public class OfferForJson {
public long primaryMarketVolume;
public long primaryMarketMinVolume;
@JsonIgnore
transient private final MonetaryFormat fiatFormat = new MonetaryFormat().shift(0).minDecimals(4).repeatOptionalDecimals(0, 0);
@JsonIgnore
transient private final MonetaryFormat altcoinFormat = new MonetaryFormat().shift(0).minDecimals(8).repeatOptionalDecimals(0, 0);
@JsonIgnore
transient private final MonetaryFormat coinFormat = MonetaryFormat.BTC;
public OfferForJson(OfferPayload.Direction direction,
String currencyCode,
@ -71,11 +79,6 @@ public class OfferForJson {
setDisplayStrings();
}
protected final MonetaryFormat fiatFormat = new MonetaryFormat().shift(0).minDecimals(4).repeatOptionalDecimals(0, 0);
protected final MonetaryFormat altcoinFormat = new MonetaryFormat().shift(0).minDecimals(8).repeatOptionalDecimals(0, 0);
protected final MonetaryFormat coinFormat = MonetaryFormat.BTC;
//protected final DecimalFormat decimalFormat = new DecimalFormat("#.#");
private void setDisplayStrings() {
try {
final Price price = getPrice();
@ -99,21 +102,6 @@ public class OfferForJson {
primaryMarketMinVolume = getMinAmountAsCoin().getValue();
primaryMarketVolume = getAmountAsCoin().getValue();
//final double value = price.value != 0 ? price.value / 100000000D : 0;
// priceDisplayString = decimalFormat.format(MathUtils.roundDouble(value, precision)).replace(",", ".");
// primaryMarketMinAmountDisplayString = altcoinFormat.noCode().format(getMinVolume()).toString();
// primaryMarketAmountDisplayString = altcoinFormat.noCode().format(getVolume()).toString();
// primaryMarketMinVolumeDisplayString = coinFormat.noCode().format(getMinAmountAsCoin()).toString();
// primaryMarketVolumeDisplayString = coinFormat.noCode().format(getAmountAsCoin()).toString();
/*primaryMarketPrice = MathUtils.roundDoubleToLong(MathUtils.scaleUpByPowerOf10(value, precision));
primaryMarketMinAmount = (long) MathUtils.scaleUpByPowerOf10(getMinVolume().longValue(), precision);
primaryMarketAmount = (long) MathUtils.scaleUpByPowerOf10(getVolume().longValue(), precision);
primaryMarketMinVolume = getMinAmountAsCoin().longValue();
primaryMarketVolume = getAmountAsCoin().longValue();*/
} else {
primaryMarketDirection = direction;
currencyPair = Res.getBaseCurrencyCode() + "/" + currencyCode;
@ -129,21 +117,6 @@ public class OfferForJson {
primaryMarketAmount = getAmountAsCoin().getValue();
primaryMarketMinVolume = getMinVolume().getValue();
primaryMarketVolume = getVolume().getValue();
/*
priceDisplayString = fiatFormat.noCode().format(price.getMonetary()).toString();
primaryMarketMinAmountDisplayString = coinFormat.noCode().format(getMinAmountAsCoin()).toString();
primaryMarketAmountDisplayString = coinFormat.noCode().format(getAmountAsCoin()).toString();
primaryMarketMinVolumeDisplayString = fiatFormat.noCode().format(getMinVolume().getMonetary()).toString();
primaryMarketVolumeDisplayString = fiatFormat.noCode().format(getVolume().getMonetary()).toString();
int precision = 4;
primaryMarketPrice = (long) MathUtils.scaleUpByPowerOf10(price.getValue(), precision);
primaryMarketMinAmount = getMinAmountAsCoin().getValue();
primaryMarketAmount = getAmountAsCoin().getValue();
primaryMarketMinVolume = (long) MathUtils.scaleUpByPowerOf10(getMinVolume().getValue(), precision);
primaryMarketVolume = (long) MathUtils.scaleUpByPowerOf10(getVolume().getValue(), precision);*/
}
} catch (Throwable t) {

View File

@ -86,12 +86,16 @@ public class TradeStatisticsManager implements PersistedDataHost {
});
// At startup the P2PDataStorage inits earlier, otherwise we ge the listener called.
p2PService.getP2PDataStorage().getMap().values().forEach(e -> {
final List<ProtectedStorageEntry> list = new ArrayList<>(p2PService.getP2PDataStorage().getMap().values());
list.forEach(e -> {
final StoragePayload storagePayload = e.getStoragePayload();
if (storagePayload instanceof TradeStatistics) {
if (storagePayload instanceof TradeStatistics)
add((TradeStatistics) storagePayload, false);
}
});
statisticsStorage.queueUpForSave(new TradeStatisticsList(new ArrayList<>(tradeStatisticsSet)), 2000);
dump();
}
public void add(TradeStatistics tradeStatistics, boolean storeLocally) {
@ -101,10 +105,10 @@ public class TradeStatisticsManager implements PersistedDataHost {
tradeStatisticsSet.add(tradeStatistics);
observableTradeStatisticsSet.add(tradeStatistics);
if (storeLocally)
if (storeLocally) {
statisticsStorage.queueUpForSave(new TradeStatisticsList(new ArrayList<>(tradeStatisticsSet)), 2000);
dump();
dump();
}
} else {
log.debug("We have already an item with the same offer ID. That might happen if both the maker and the taker published the tradeStatistics");
}