public boolean push() { if (!isLinked()) return false; FileInputStream inputStream = null; try { app.getGui().setStatus("Uploading..."); File[] files = new File(NoteManager.defaultPath).listFiles(); for (int i = 0; i < files.length; i++) { inputStream = new FileInputStream(files[i]); mDBApi.putFileOverwrite( "/".concat(files[i].getName()), inputStream, files[i].length(), null); app.getGui().setStatus("Uploaded ".concat(files[i].getName())); inputStream.close(); } return true; } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); app.getGui().setStatus("Files not found."); } catch (DropboxException e) { // TODO Auto-generated catch block e.printStackTrace(); app.getGui().setStatus("Couldn't connect to server."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); app.getGui().setStatus("IO errors."); } return false; }
public boolean pull() { // TODO Auto-generated method stub if (!isLinked()) return false; File file; FileOutputStream outputStream = null; try { Entry entry = mDBApi.metadata("/", 0, null, true, null); for (Entry e : entry.contents) { if (!e.isDir) { app.getGui().setStatus("Downloading..."); file = new File(NoteManager.defaultPath.concat(e.fileName())); outputStream = new FileOutputStream(file); DropboxFileInfo info = mDBApi.getFile("/".concat(e.fileName()), null, outputStream, null); app.getGui().setStatus("Downloaded ".concat(info.getMetadata().fileName())); outputStream.close(); } } return true; } catch (DropboxException e) { e.printStackTrace(); app.getGui().setStatus("Couldn't connect to server."); } catch (FileNotFoundException e) { e.printStackTrace(); app.getGui().setStatus("Files not found."); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); app.getGui().setStatus("IO errors."); } return false; }
@Override protected Void doInBackground(Void... params) { try { inputStream = new FileInputStream(file); DropboxAPI.Entry response = mDBApi.putFile(file.getName(), inputStream, file.length(), null, null); Log.d(log, "doInBackground() The uploaded file's rev is: " + response.rev); } catch (FileNotFoundException e) { e.printStackTrace(); Log.d(log, "doInBackground() FileNotFoundException " + e.toString()); } catch (DropboxException e) { e.printStackTrace(); Log.d(log, "doInBackground() DropboxException " + e.toString()); } return null; }
public String accountInfo() { // TODO Auto-generated method stub if (!isLinked()) return "You haven't been logged yet.\nPress Dropbox -> Login."; try { Account account = mDBApi.accountInfo(); StringBuilder user = new StringBuilder(account.displayName); user.append("\nCountry : "); user.append(account.country); user.append("\nUsage : "); user.append(account.quota); return user.toString(); } catch (DropboxException e) { // TODO Auto-generated catch block e.printStackTrace(); return null; } }
public boolean login() { try { AppKeyPair appKeyPair = new AppKeyPair(APP_KEY, APP_SECRET); WebAuthSession was = new WebAuthSession(appKeyPair, ACCESS_TYPE); WebAuthSession.WebAuthInfo info = was.getAuthInfo(); if (Desktop.isDesktopSupported()) { try { Desktop.getDesktop().browse(URI.create(info.url)); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } JOptionPane.showMessageDialog( app.getGui().getContainer(), "Log in to your dropbox account and approve Myn on the opened page.\nAfter you done it, press OK.", "Auth", JOptionPane.PLAIN_MESSAGE); app.getGui().setStatus("Checking..."); was.retrieveWebAccessToken(info.requestTokenPair); AccessTokenPair accessToken = was.getAccessTokenPair(); authData = new AuthData(appKeyPair, accessToken); authData.persist(); app.getGui().setStatus("Logged In."); return true; } catch (HeadlessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (DropboxException e) { // TODO Auto-generated catch block e.printStackTrace(); app.getGui().setStatus("Couldn't connect to server."); } return false; }
public void downloadFile(String relPath) { VOSync.debug("Downloading file from storage: " + relPath); Path filePath = FileSystems.getDefault().getPath(startDir.toString(), relPath.substring(1)); try { WatchKey key = filePath.getParent().register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); keys.remove(key); key.cancel(); FileOutputStream outp = new FileOutputStream(filePath.toFile()); DropboxFileInfo info = api.getFile(relPath, null, outp, null); outp.close(); key = filePath.getParent().register(watcher, ENTRY_CREATE, ENTRY_DELETE, ENTRY_MODIFY); keys.put(key, filePath.getParent()); MetaHandler.setFile(relPath, filePath.toFile(), info.getMetadata().rev); } catch (IOException ex) { logger.error("Error downloading file " + relPath + ": " + ex.getMessage()); } catch (DropboxException ex) { ex.printStackTrace(); logger.error("Error downloading file " + relPath + ": " + ex.getMessage()); } }
@Override public void run() { logger.debug("Register root " + startDir.toString()); try { registerAll(startDir); } catch (IOException ex) { logger.error(ex.getMessage()); return; } if (isInterrupted()) return; VOSync.debug("Sync local db with drive"); DbPool.goSql( "Synching the local db with drive", "select NAME from FILES", new SqlWorker<Boolean>() { @Override public Boolean go(Connection conn, PreparedStatement stmt) throws SQLException { ResultSet resSet = stmt.executeQuery(); while (resSet.next()) { try { String fileName = resSet.getString(1); Path filePath = FileSystems.getDefault().getPath(startDir.toString(), fileName.substring(1)); if (!filePath.toFile().exists()) { logger.debug( "Deleting file " + fileName + " existing in DB and not present on disk"); api.delete(fileName); MetaHandler.delete(fileName); } } catch (DropboxException ex) { } } resSet.close(); return true; } }); if (isInterrupted()) return; VOSync.debug("Sync storage"); syncStorage(); logger.debug("Start watching"); while (!isInterrupted()) { WatchKey key; try { key = watcher.take(); } catch (InterruptedException x) { return; } Path dir = keys.get(key); if (dir == null) { System.err.println("WatchKey " + key.toString() + " not recognized!"); continue; } for (WatchEvent<?> event : key.pollEvents()) { Kind<?> kind = event.kind(); // TBD - provide example of how OVERFLOW event is handled if (kind == OVERFLOW) { continue; } // Context for directory entry event is the file name of entry WatchEvent<Path> ev = cast(event); Path name = ev.context(); Path child = dir.resolve(name); Path relativeDir = startDir.relativize(child); String fileRelPath = "/" + fixPath(relativeDir.toString()); // print out event logger.debug(event.kind().name() + ":" + child + " " + name + " " + key); try { if (Files.exists(child, new LinkOption[] {}) && Files.isHidden(child)) { logger.error( "Skipping hidden file " + child.getFileName()); // skip OS generated catalog files } else { if (event.kind() == ENTRY_CREATE) { if (Files.isRegularFile(child, NOFOLLOW_LINKS)) { // file modified uploadFile(fileRelPath, child); } else if (Files.isDirectory(child, NOFOLLOW_LINKS)) { // directory contents changed registerAll(child); } } else if (event.kind() == ENTRY_DELETE) { logger.debug("Deleting " + fileRelPath); api.delete(fileRelPath); MetaHandler.delete(fileRelPath); logger.debug("Deleted!"); } else if (event.kind() == ENTRY_MODIFY) { if (Files.isRegularFile(child, NOFOLLOW_LINKS)) { // file modified uploadFile(fileRelPath, child); } else if (Files.isDirectory(child, NOFOLLOW_LINKS)) { // directory contents changed // logger.debug("Renewing dir: "+relativeDir.toString()); // TODO update folder date // MetaHandler.setFile(fileRelPath, child, rev); } } } } catch (IOException ex) { ex.printStackTrace(); logger.error(ex.getMessage()); } catch (DropboxException ex) { ex.printStackTrace(); logger.error(ex.getMessage()); } } boolean valid = key.reset(); if (!valid) keys.remove(key); } }
/** * First of all create a backup of Money and Categories Database on the SD card. After that, get * those backups from the SD card and upload it to the DropBox after the app checks if it already * exist. If the backup already exists then delete the old and create the new one. * * @param params * @return */ @Override protected String doInBackground(String... params) { String MoneyDBpath = "/data/" + context.getPackageName() + "/databases/MoneyDatabase"; String MoneyOutputName = "/TransactionsBackup"; BackupRestoreSD backupRestoreSD = new BackupRestoreSD(MoneyDBpath, MoneyOutputName, context); backupRestoreSD.backup(); File MoneyBackup = new File(backupRestoreSD.getSDPath() + "/Pocket-Wallet/TransactionsBackup"); String CategoriesDBpath = "/data/" + context.getPackageName() + "/databases/categories"; String CategoriesOutputName = "/CategoriesBackup"; backupRestoreSD = new BackupRestoreSD(CategoriesDBpath, CategoriesOutputName, context); backupRestoreSD.backup(); File CategoryBackup = new File(backupRestoreSD.getSDPath() + "/Pocket-Wallet/CategoriesBackup"); try { InputStream Mis = new FileInputStream(MoneyBackup); InputStream Cis = new FileInputStream(CategoryBackup); DropboxAPI.Entry metadata = api.metadata("/", 1000, null, true, null); boolean flag = false, cflag = false; List<DropboxAPI.Entry> CFolder = metadata.contents; for (DropboxAPI.Entry entry : CFolder) { if (entry.fileName().equals("TransactionsBackup")) { flag = true; } else if (entry.fileName().equals("CategoriesBackup")) { cflag = true; } if (flag && cflag) { break; } } if (!flag) { api.putFile("TransactionsBackup", Mis, MoneyBackup.length(), null, null); } else { api.delete("/TransactionsBackup"); api.putFile("TransactionsBackup", Mis, MoneyBackup.length(), null, null); } if (!cflag) { api.putFile("CategoriesBackup", Cis, CategoryBackup.length(), null, null); } else { api.delete("/CategoriesBackup"); api.putFile("CategoriesBackup", Cis, CategoryBackup.length(), null, null); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (DropboxException e) { e.printStackTrace(); } return null; }