public static DatabaseVersionHeader createFromString(String databaseVersionHeaderString) throws Exception { Matcher databaseVersionHeaderMatcher = databaseVersionHeaderPattern.matcher(databaseVersionHeaderString); if (!databaseVersionHeaderMatcher.matches()) { throw new Exception("Invalid database version header string: " + databaseVersionHeaderString); } String client = databaseVersionHeaderMatcher.group(1); String vectorClockString = databaseVersionHeaderMatcher.group(2); long databaseVersionHeaderTime = Long.parseLong(databaseVersionHeaderMatcher.group(3)); VectorClock vectorClock = createVectorClock(vectorClockString); DatabaseVersionHeader newDatabaseVersionHeader = new DatabaseVersionHeader(); newDatabaseVersionHeader.setDate(new Date(databaseVersionHeaderTime)); newDatabaseVersionHeader.setVectorClock(vectorClock); newDatabaseVersionHeader.setClient(client); return newDatabaseVersionHeader; }