private boolean loadFormFromLocalStorage(Activity activity, String formName) {
   try {
     InputStream is = LocalDriver.getLocalInputStream(formName);
     if (is != null) {
       FormTemplateManager.loadForm(is);
       return true;
     } else {
       return false;
     }
   } catch (Exception ex) {
     Log.e(MainActivity.PT_APP_INFO, "Could not load form from local repository because " + ex);
     return false;
   } finally {
     goBackToMain(activity);
   }
 }
 public void saveOrUpdate(
     final FormTemplate formToSave,
     final GoogleApiClient googleClient,
     final GoogleFileType googleFileType)
     throws GoogleDriverException {
   LocalDriver.save(formToSave, googleFileType, null);
   if (storageDriveId == null) {
     throw new GoogleDriverException("Cannot found form directory on google drive");
   }
   final DriveId dirDriveId;
   if (googleFileType == GoogleFileType.REPORT) {
     dirDriveId = reportDriveId;
   } else {
     dirDriveId = storageDriveId;
   }
   final String fileName = PhysicalTherapyUtils.getFileName(formToSave);
   Query.Builder queryBuilder = new Query.Builder();
   queryBuilder.addFilter(Filters.eq(SearchableField.TITLE, fileName));
   Query query = queryBuilder.build();
   try {
     final DriveFolder driveFolder = Drive.DriveApi.getFolder(googleClient, dirDriveId);
     driveFolder
         .queryChildren(googleClient, query)
         .setResultCallback(
             new ResultCallback<DriveApi.MetadataBufferResult>() {
               @Override
               public void onResult(DriveApi.MetadataBufferResult resultBufferResult) {
                 DriveId fileDriveId = null;
                 for (Metadata result : resultBufferResult.getMetadataBuffer()) {
                   fileDriveId = result.getDriveId();
                 }
                 if (fileDriveId == null) {
                   save(formToSave, googleClient, dirDriveId, fileName);
                 } else {
                   update(formToSave, googleClient, fileDriveId, fileName);
                 }
               }
             });
   } catch (Throwable th) {
     throw new GoogleDriverException("Unable to find or save file to drive because " + th, th);
   }
 }
 public List<String> getAllForms(GoogleApiClient googleClient) {
   final DriveFolder driveFolder = Drive.DriveApi.getFolder(googleClient, storageDriveId);
   driveFolder
       .listChildren(googleClient)
       .setResultCallback(
           new ResultCallback<DriveApi.MetadataBufferResult>() {
             @Override
             public void onResult(DriveApi.MetadataBufferResult resultBufferResult) {
               Set<String> tmpFormNames = new HashSet<String>();
               for (Metadata result : resultBufferResult.getMetadataBuffer()) {
                 tmpFormNames.add(result.getTitle());
               }
               for (String formName : LocalDriver.loadFormNamesFromLocalStorage()) {
                 tmpFormNames.add(formName);
               }
               formNames.addAll(tmpFormNames);
             }
           });
   if (formNames.size() == 0) {
     formNames = LocalDriver.loadFormNamesFromLocalStorage();
   }
   return formNames;
 }