package net.i2p.stat; import java.util.Date; import java.util.Properties; import net.i2p.I2PAppContext; import net.i2p.data.DataHelper; import net.i2p.util.Log; /** * Output rate data. * This is used via ProfilePersistenceHelper and the output * must be compatible. */ class PersistenceHelper { private final static String NL = System.getProperty("line.separator"); public final static void add(StringBuilder buf, String prefix, String name, String description, double value) { buf.append("# ").append(prefix).append(name).append(NL); buf.append("# ").append(description).append(NL); buf.append(prefix).append(name).append('=').append(value).append(NL).append(NL); } /** @since 0.8.5 */ public final static void addDate(StringBuilder buf, String prefix, String name, String description, long value) { String when = value > 0 ? (new Date(value)).toString() : "Never"; add(buf, prefix, name, description + ' ' + when, value); } /** @since 0.8.5 */ public final static void addTime(StringBuilder buf, String prefix, String name, String description, long value) { String when = DataHelper.formatDuration(value); add(buf, prefix, name, description + ' ' + when, value); } /** @param value non-negative */ public final static void add(StringBuilder buf, String prefix, String name, String description, long value) { buf.append("# ").append(prefix).append(name).append(NL); buf.append("# ").append(description).append(NL); buf.append(prefix).append(name).append('=').append(value).append(NL).append(NL); } /** * @return non-negative, returns 0 on error */ public final static long getLong(Properties props, String prefix, String name) { String val = props.getProperty(prefix + name); if (val != null) { try { long rv = Long.parseLong(val); return rv >= 0 ? rv : 0; } catch (NumberFormatException nfe) { Log log = I2PAppContext.getGlobalContext().logManager().getLog(PersistenceHelper.class); log.warn("Error formatting " + val, nfe); } } return 0; } /** * @return 0 on error */ public final static double getDouble(Properties props, String prefix, String name) { String val = props.getProperty(prefix + name); if (val != null) { try { return Double.parseDouble(val); } catch (NumberFormatException nfe) { Log log = I2PAppContext.getGlobalContext().logManager().getLog(PersistenceHelper.class); log.warn("Error formatting " + val, nfe); } } return 0; } /** * @return non-negative, returns 0 on error * @since 0.8.13 */ public final static int getInt(Properties props, String prefix, String name) { String val = props.getProperty(prefix + name); if (val != null) { try { int rv = Integer.parseInt(val); return rv >= 0 ? rv : 0; } catch (NumberFormatException nfe) { Log log = I2PAppContext.getGlobalContext().logManager().getLog(PersistenceHelper.class); log.warn("Error formatting " + val, nfe); } } return 0; } }