Examples of DatabaseVersion


Examples of org.syncany.database.DatabaseVersion

    ChangeSet localChanges = result.getStatusResult().getChangeSet();
    List<File> locallyUpdatedFiles = extractLocallyUpdatedFiles(localChanges);

    // Index
    DatabaseVersion newDatabaseVersion = index(locallyUpdatedFiles);

    if (newDatabaseVersion.getFileHistories().size() == 0) {
      logger.log(Level.INFO, "Local database is up-to-date. NOTHING TO DO!");
      result.setResultCode(UpResultCode.OK_NO_CHANGES);
     
      finishOperation();
      fireEndEvent();

      return result;
    }
   
    // Upload multichunks
    logger.log(Level.INFO, "Uploading new multichunks ...");
    addMultiChunksToTransaction(newDatabaseVersion.getMultiChunks());   

    // Create delta database and commit transaction
    writeAndAddDeltaDatabase(newDatabaseVersion);
    remoteTransaction.commit();

    // Save local database
    logger.log(Level.INFO, "Persisting local SQL database (new database version {0}) ...", newDatabaseVersion.getHeader().toString());
    long newDatabaseVersionId = localDatabase.persistDatabaseVersion(newDatabaseVersion);

    logger.log(Level.INFO, "Removing DIRTY database versions from database ...");
    localDatabase.removeDirtyDatabaseVersions(newDatabaseVersionId);
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

    return true;
  }

  private void writeAndAddDeltaDatabase(DatabaseVersion newDatabaseVersion) throws InterruptedException, StorageException, IOException {
    // Clone database version (necessary, because the original must not be touched)
    DatabaseVersion deltaDatabaseVersion = newDatabaseVersion.clone();

    // Add dirty data (if existent)
    addDirtyData(deltaDatabaseVersion);

    // New delta database
    MemoryDatabase deltaDatabase = new MemoryDatabase();
    deltaDatabase.addDatabaseVersion(deltaDatabaseVersion);

    // Save delta database locally
    long newestLocalDatabaseVersion = deltaDatabaseVersion.getVectorClock().getClock(config.getMachineName());
    DatabaseRemoteFile remoteDeltaDatabaseFile = new DatabaseRemoteFile(config.getMachineName(), newestLocalDatabaseVersion);
    File localDeltaDatabaseFile = config.getCache().getDatabaseFile(remoteDeltaDatabaseFile.getName());

    logger.log(Level.INFO, "Saving local delta database, version {0} to file {1} ... ", new Object[] { deltaDatabaseVersion.getHeader(),
        localDeltaDatabaseFile });

    saveDeltaDatabase(deltaDatabase, localDeltaDatabaseFile);

    // Upload delta database
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

    }
    else {
      logger.log(Level.INFO, "Adding DIRTY data to new database version: ");

      while (dirtyDatabaseVersions.hasNext()) {
        DatabaseVersion dirtyDatabaseVersion = dirtyDatabaseVersions.next();

        logger.log(Level.INFO, "- Adding chunks/multichunks/filecontents from database version " + dirtyDatabaseVersion.getHeader());

        for (ChunkEntry chunkEntry : dirtyDatabaseVersion.getChunks()) {
          newDatabaseVersion.addChunk(chunkEntry);
        }

        for (MultiChunkEntry multiChunkEntry : dirtyDatabaseVersion.getMultiChunks()) {
          newDatabaseVersion.addMultiChunk(multiChunkEntry);
        }

        for (FileContent fileContent : dirtyDatabaseVersion.getFileContents()) {
          newDatabaseVersion.addFileContent(fileContent);
        }
      }
    }
  }
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

    // Index
    Deduper deduper = new Deduper(config.getChunker(), config.getMultiChunker(), config.getTransformer());
    Indexer indexer = new Indexer(config, deduper);

    DatabaseVersion newDatabaseVersion = indexer.index(localFiles);

    newDatabaseVersion.setVectorClock(newVectorClock);
    newDatabaseVersion.setTimestamp(new Date());
    newDatabaseVersion.setClient(config.getMachineName());

    return newDatabaseVersion;
  }
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

   * {@link SqlDatabase#persistDatabaseVersion(DatabaseVersion)}.
   */
  private void persistDatabaseVersion(MemoryDatabase winnersDatabase, DatabaseVersionHeader currentDatabaseVersionHeader) {
    logger.log(Level.INFO, "  + Applying database version " + currentDatabaseVersionHeader.getVectorClock());

    DatabaseVersion applyDatabaseVersion = winnersDatabase.getDatabaseVersion(currentDatabaseVersionHeader.getVectorClock());       
    localDatabase.persistDatabaseVersion(applyDatabaseVersion);
  }
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

   * of the leftover unreferenced database entities (unmapped chunks, multichunks, file contents).
   */
  private void persistPurgeDatabaseVersion(MemoryDatabase winnersPurgeDatabase, DatabaseVersionHeader currentDatabaseVersionHeader) throws SQLException {
    logger.log(Level.INFO, "  + Applying PURGE database version " + currentDatabaseVersionHeader.getVectorClock());

    DatabaseVersion purgeDatabaseVersion = winnersPurgeDatabase.getDatabaseVersion(currentDatabaseVersionHeader.getVectorClock());
    Map<FileHistoryId, FileVersion> purgeFileVersions = new HashMap<FileHistoryId, FileVersion>();
   
    for (PartialFileHistory purgeFileHistory : purgeDatabaseVersion.getFileHistories()) {
      logger.log(Level.INFO, "     - Purging file history {0}, with versions <= {1}", new Object[] {
          purgeFileHistory.getFileHistoryId().toString(), purgeFileHistory.getLastVersion() });
     
      purgeFileVersions.put(purgeFileHistory.getFileHistoryId(), purgeFileHistory.getLastVersion());       
    }
   
    localDatabase.removeSmallerOrEqualFileVersions(purgeFileVersions);
    localDatabase.removeUnreferencedDatabaseEntities();
    localDatabase.writeDatabaseVersionHeader(purgeDatabaseVersion.getHeader());   
   
    localDatabase.commit(); // TODO [medium] Harmonize commit behavior   
  }
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

    // Local: First, remove file versions that are not longer needed
    localDatabase.removeSmallerOrEqualFileVersions(purgeFileVersions);

    // Local: Then, determine what must be changed remotely and remove it locally
    Map<MultiChunkId, MultiChunkEntry> unusedMultiChunks = localDatabase.getUnusedMultiChunks();
    DatabaseVersion purgeDatabaseVersion = createPurgeDatabaseVersion(purgeFileVersions);

    localDatabase.removeUnreferencedDatabaseEntities();
    localDatabase.persistPurgeDatabaseVersion(purgeDatabaseVersion);   

    // Remote: serialize purge database version to file and upload
    DatabaseRemoteFile newPurgeRemoteFile = findNewPurgeRemoteFile(purgeDatabaseVersion.getHeader());
    File tempLocalPurgeDatabaseFile = writePurgeFile(purgeDatabaseVersion, newPurgeRemoteFile);

    addPurgeFileToTransaction(tempLocalPurgeDatabaseFile, newPurgeRemoteFile);
    remoteDeleteUnusedMultiChunks(unusedMultiChunks);
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

    purgeDatabaseVersionHeader.setType(DatabaseVersionType.PURGE);
    purgeDatabaseVersionHeader.setDate(new Date());
    purgeDatabaseVersionHeader.setClient(config.getMachineName());
    purgeDatabaseVersionHeader.setVectorClock(purgeVectorClock);

    DatabaseVersion purgeDatabaseVersion = new DatabaseVersion();
    purgeDatabaseVersion.setHeader(purgeDatabaseVersionHeader);

    for (Entry<FileHistoryId, FileVersion> fileHistoryEntry : mostRecentPurgeFileVersions.entrySet()) {
      PartialFileHistory purgeFileHistory = new PartialFileHistory(fileHistoryEntry.getKey());

      purgeFileHistory.addFileVersion(fileHistoryEntry.getValue());
      purgeDatabaseVersion.addFileHistory(purgeFileHistory);

      logger.log(Level.FINE, "- Pruning file history " + fileHistoryEntry.getKey() + " versions <= " + fileHistoryEntry.getValue() + " ...");
    }

    return purgeDatabaseVersion;
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

   * @param files List of files to be deduplicated
   * @return New database version containing new/changed/deleted entities
   * @throws IOException If the chunking/deduplication cannot read/process any of the files
   */
  public DatabaseVersion index(List<File> files) throws IOException {
    DatabaseVersion newDatabaseVersion = new DatabaseVersion();

    // Load file history cache
    List<PartialFileHistory> fileHistoriesWithLastVersion = localDatabase.getFileHistoriesWithLastVersion();

    // TODO [medium] This should be in FileHistoryDao
View Full Code Here

Examples of org.syncany.database.DatabaseVersion

      throw new RuntimeException("Unexpected database version type: " + databaseVersionHeader.getType());
    }     
  }

  private DatabaseVersion createDatabaseVersionFromRowDefault(DatabaseVersionHeader databaseVersionHeader, ResultSet resultSet) {
    DatabaseVersion databaseVersion = new DatabaseVersion();
    databaseVersion.setHeader(databaseVersionHeader);
   
    Map<ChunkChecksum, ChunkEntry> chunks = chunkDao.getChunks(databaseVersionHeader.getVectorClock());
    Map<MultiChunkId, MultiChunkEntry> multiChunks = multiChunkDao.getMultiChunks(databaseVersionHeader.getVectorClock());
    Map<FileChecksum, FileContent> fileContents = fileContentDao.getFileContents(databaseVersionHeader.getVectorClock());
    Map<FileHistoryId, PartialFileHistory> fileHistories = fileHistoryDao.getFileHistoriesWithFileVersions(databaseVersionHeader.getVectorClock());

    for (ChunkEntry chunk : chunks.values()) {
      databaseVersion.addChunk(chunk);
    }

    for (MultiChunkEntry multiChunk : multiChunks.values()) {
      databaseVersion.addMultiChunk(multiChunk);
    }

    for (FileContent fileContent : fileContents.values()) {
      databaseVersion.addFileContent(fileContent);
    }

    for (PartialFileHistory fileHistory : fileHistories.values()) {
      databaseVersion.addFileHistory(fileHistory);
    }

    return databaseVersion;
  }
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.