# Class Util

java.lang.Object
org.apache.zookeeper.server.persistence.Util

public class Util extends Object
A collection of utility methods for dealing with file name parsing, low level I/O file operations and marshalling/unmarshalling.

## Constructor Summary

Constructors
Constructor
Description
`Util()`

## Method Summary

Modifier and Type
Method
Description
`static String`
`getFormatConversionPolicy(Properties props)`
Extracts the value of the dbFormatConversion attribute.
`static File`
`getLogDir(Properties props)`
Extracts transaction log directory property value from the container.
`static File`
`getSnapDir(Properties props)`
Extracts snapshot directory property value from the container.
`static long`
`getZxidFromName(String name, String prefix)`
Extracts zxid from the file name.
`static boolean`
`isLogFileName(String fileName)`
Returns true if fileName is a log file name.
`static boolean`
`isSnapshotFileName(String fileName)`
Returns true if fileName is a snapshot file name.
`static URI`
`makeFileLoggerURL(File dataDir, File dataLogDir)`
Given two directory files the method returns a well-formed logfile provider URI.
`static URI`
`makeFileLoggerURL(File dataDir, File dataLogDir, String convPolicy)`
`static String`
`makeLogName(long zxid)`
Creates a valid transaction log file name.
`static String`
`makeSnapshotName(long zxid)`
Creates a snapshot file name.
`static String`
`makeURIString(String dataDir, String dataLogDir, String convPolicy)`
`static byte[]`
`marshallTxnEntry(TxnHeader hdr, Record txn, TxnDigest digest)`
Serializes transaction header and transaction data into a byte buffer.
`static byte[]`
`readTxnBytes(InputArchive ia)`
Reads a transaction entry from the input archive.
`static List<File>`
`sortDataDir(File[] files, String prefix, boolean ascending)`
Sort the list of files.
`static void`
`writeTxnBytes(OutputArchive oa, byte[] bytes)`
Write the serialized transaction record to the output archive.

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### Util

public Util()

## Method Details

### makeURIString

public static String makeURIString(String dataDir, String dataLogDir, String convPolicy)

### makeFileLoggerURL

public static URI makeFileLoggerURL(File dataDir, File dataLogDir)
Given two directory files the method returns a well-formed logfile provider URI. This method is for backward compatibility with the existing code that only supports logfile persistence and expects these two parameters passed either on the command-line or in the configuration file.

Parameters:
  `dataDir` - snapshot directory
  `dataLogDir` - transaction log directory
Returns:
  logfile provider URI

### makeFileLoggerURL

public static URI makeFileLoggerURL(File dataDir, File dataLogDir, String convPolicy)

### makeLogName

public static String makeLogName(long zxid)
Creates a valid transaction log file name.

Parameters:
  `zxid` - used as a file name suffix (extension)
Returns:
  file name

### makeSnapshotName

public static String makeSnapshotName(long zxid)
Creates a snapshot file name.

Parameters:
  `zxid` - used as a suffix
Returns:
  file name

### getSnapDir

public static File getSnapDir(Properties props)
Extracts snapshot directory property value from the container.

Parameters:
  `props` - properties container
Returns:
  file representing the snapshot directory

### getLogDir

public static File getLogDir(Properties props)
Extracts transaction log directory property value from the container.

Parameters:
  `props` - properties container
Returns:
  file representing the txn log directory

### getFormatConversionPolicy

public static String getFormatConversionPolicy(Properties props)
Extracts the value of the dbFormatConversion attribute.

Parameters:
  `props` - properties container
Returns:
  value of the dbFormatConversion attribute

### getZxidFromName

public static long getZxidFromName(String name, String prefix)
Extracts zxid from the file name. The file name should have been created using one of the `makeLogName(long)` or `makeSnapshotName(long)`.

Parameters:
  `name` - the file name to parse
  `prefix` - the file name prefix (snapshot or log)
Returns:
  zxid

### readTxnBytes

public static byte[] readTxnBytes(InputArchive ia) throws IOException
Reads a transaction entry from the input archive.

Parameters:
  `ia` - archive to read from
Returns:
  null if the entry is corrupted or EOF has been reached; a buffer (possible empty) containing serialized transaction record.
Throws:
  `IOException`

### marshallTxnEntry

public static byte[] marshallTxnEntry(TxnHeader hdr, Record txn, TxnDigest digest) throws IOException
Serializes transaction header and transaction data into a byte buffer.

Parameters:
  `hdr` - transaction header
  `txn` - transaction data
  `digest` - transaction digest
Returns:
  serialized transaction record
Throws:
  `IOException`

### writeTxnBytes

public static void writeTxnBytes(OutputArchive oa, byte[] bytes) throws IOException
Write the serialized transaction record to the output archive.

Parameters:
  `oa` - output archive
  `bytes` - serialized transaction record
Throws:
  `IOException`

### sortDataDir

public static List<File> sortDataDir(File[] files, String prefix, boolean ascending)
Sort the list of files. Recency as determined by the version component of the file name.

Parameters:
  `files` - array of files
  `prefix` - files not matching this prefix are assumed to have a version = -1)
  `ascending` - true sorted in ascending order, false results in descending order
Returns:
  sorted input files

### isLogFileName

public static boolean isLogFileName(String fileName)
Returns true if fileName is a log file name.

Parameters:
  `fileName` -

### isSnapshotFileName

public static boolean isSnapshotFileName(String fileName)
Returns true if fileName is a snapshot file name.

Parameters:
  `fileName` -