// This software is released into the Public Domain. See copying.txt for details. package org.openstreetmap.osmosis.apidb.v0_6.impl; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; /** * Represents the data associated with a database transaction snapshot providing information about * currently in-flight transactions. */ public class TransactionSnapshot { private long xMin; private long xMax; private List<Long> xIpList; /** * Creates a new instance. * * @param snapshotString * The snapshot string in format "xMin:xMax:inflight1,inflight2,...". */ public TransactionSnapshot(String snapshotString) { StringTokenizer tokenizer; tokenizer = new StringTokenizer(snapshotString, ":"); xMin = Long.parseLong(tokenizer.nextToken()); xMax = Long.parseLong(tokenizer.nextToken()); xIpList = new ArrayList<Long>(); if (tokenizer.hasMoreTokens()) { tokenizer = new StringTokenizer(tokenizer.nextToken(), ","); while (tokenizer.hasMoreTokens()) { xIpList.add(Long.parseLong(tokenizer.nextToken())); } } } /** * Gets the earliest still active transaction. * * @return The transaction id. */ public long getXMin() { return xMin; } /** * Gets the next transaction to be created. * * @return The transaction id. */ public long getXMax() { return xMax; } /** * Gets the list of active transactions. * * @return The transaction ids. */ public List<Long> getXIpList() { return xIpList; } }