List of usage examples for org.apache.commons.logging Log info
void info(Object message);
From source file:org.opendatakit.aggregate.task.PurgeOlderSubmissionsWorkerImpl.java
public final void purgeOlderSubmissions() throws ODKDatastoreException, ODKFormNotFoundException, ODKExternalServiceDependencyException { Log logger = LogFactory.getLog(PurgeOlderSubmissionsWorkerImpl.class); logger.info("Beginning Submissions Purge: " + miscTasksKey.toString() + " form " + form.getFormId()); MiscTasks t;// www . ja v a 2s. c om try { t = new MiscTasks(miscTasksKey, cc); } catch (Exception e) { return; } // gain lock on the formId itself... // the locked resource should be the formId, but for testing // it is useful to have the external services collide using // formId. Prefix with MT: to indicate that it is a miscellaneousTask // lock. Datastore ds = cc.getDatastore(); User user = cc.getCurrentUser(); String lockedResourceName = t.getMiscTaskLockName(); TaskLock formIdTaskLock = ds.createTaskLock(user); boolean locked = false; try { if (formIdTaskLock.obtainLock(pFormIdLockId, lockedResourceName, TaskLockType.FORM_DELETION)) { locked = true; } formIdTaskLock = null; } catch (ODKTaskLockException e1) { e1.printStackTrace(); } if (!locked) { return; } try { if (t.getRequestDate().before(form.getCreationDate())) { // form is newer, so the task must not refer to this form definition... doMarkAsComplete(t); } else { // purge request should have been created after the form... doPurgeOlderSubmissions(t); } } catch (Exception e2) { e2.printStackTrace(); } finally { formIdTaskLock = ds.createTaskLock(user); try { for (int i = 0; i < 10; i++) { if (formIdTaskLock.releaseLock(pFormIdLockId, lockedResourceName, TaskLockType.FORM_DELETION)) break; try { Thread.sleep(1000); } catch (InterruptedException e) { // just move on, this retry mechanism // is to make things nice } } } catch (ODKTaskLockException e) { e.printStackTrace(); } } }
From source file:org.opendatakit.aggregate.task.PurgeOlderSubmissionsWorkerImpl.java
private void doMarkAsComplete(MiscTasks t) throws ODKEntityPersistException, ODKOverQuotaException { Log logger = LogFactory.getLog(PurgeOlderSubmissionsWorkerImpl.class); logger.info("Submissions Purge: " + miscTasksKey.toString() + " form " + form.getFormId() + " doMarkAsComplete"); // and mark us as completed... (don't delete for audit..). t.setCompletionDate(new Date()); t.setStatus(FormActionStatus.SUCCESSFUL); t.persist(cc);/*from w w w .ja v a 2 s .c o m*/ }
From source file:org.opendatakit.aggregate.task.PurgeOlderSubmissionsWorkerImpl.java
/** * we have gained a lock on the form. Now go through and try to delete all * submissions older than the given date under this form. * /*ww w . jav a2 s . c o m*/ * @return true if form is fully deleted... * @throws ODKDatastoreException * @throws ODKTaskLockException */ private boolean doPurgeOlderSubmissions(MiscTasks t) throws Exception { CommonFieldsBase relation = null; Datastore ds = cc.getDatastore(); User user = cc.getCurrentUser(); Log logger = LogFactory.getLog(PurgeOlderSubmissionsWorkerImpl.class); Map<String, String> rp = t.getRequestParameters(); String purgeBeforeDateString = rp.get(PurgeOlderSubmissions.PURGE_DATE); Date purgeBeforeDate = WebUtils.parsePurgeDateString(purgeBeforeDateString); logger.info("Submissions Purge: " + miscTasksKey.toString() + " form " + form.getFormId() + " doPurgeOlderSubmissions date: " + purgeBeforeDateString); // it is possible to have a FormInfo entry without any information // on the backing object (no records in FormDataModel). In that // case, the formDefinition will be null, causing getTLGE() to throw // an exception. try { relation = form.getTopLevelGroupElement().getFormDataModel().getBackingObjectPrototype(); } catch (Exception e) { relation = null; } if (relation != null) { for (;;) { // retrieve submissions // for large data sets, this might fail? Date startDate = BasicConsts.EPOCH; List<TopLevelDynamicBase> topLevelEntities = querySubmissionsDateRange(startDate, purgeBeforeDate); logger.info("retrieved " + topLevelEntities.size() + " submissions."); if (topLevelEntities.size() == 0) break; List<SubmissionKey> keys = new ArrayList<SubmissionKey>(); for (TopLevelDynamicBase tld : topLevelEntities) { keys.add(new SubmissionKey(form.getFormId(), form.getTopLevelGroupElement().getElementName(), tld.getEntityKey().getKey())); } DeleteSubmissions delete; delete = new DeleteSubmissions(keys); delete.deleteSubmissions(cc); logger.info("successfully deleted " + topLevelEntities.size() + " submissions"); t.setLastActivityDate(new Date()); t.persist(cc); // renew lock TaskLock taskLock = ds.createTaskLock(user); // TODO: figure out what to do if this returns false taskLock.renewLock(pFormIdLockId, t.getMiscTaskLockName(), t.getTaskType().getLockType()); taskLock = null; } } doMarkAsComplete(t); return true; }
From source file:org.opendatakit.aggregate.task.WorksheetCreatorWorkerImpl.java
public final void worksheetCreator() { Log logger = LogFactory.getLog(WorksheetCreatorWorkerImpl.class); logger.info("Beginning Worksheet Creator: " + miscTasksKey.toString() + " form " + form.getFormId()); MiscTasks t;/*from ww w . j a v a 2s.c om*/ try { t = new MiscTasks(miscTasksKey, cc); } catch (Exception e) { logger.error("worksheetCreator: " + miscTasksKey.toString() + " form " + form.getFormId() + " MiscTasks retrieval exception: " + e.toString()); return; } // gain lock on the formId itself... // the locked resource should be the formId, but for testing // it is useful to have the external services collide using // formId. Prefix with MT: to indicate that it is a miscellaneousTask // lock. Datastore ds = cc.getDatastore(); User user = cc.getCurrentUser(); String lockedResourceName = t.getMiscTaskLockName(); TaskLock formIdTaskLock = ds.createTaskLock(user); boolean locked = false; try { if (formIdTaskLock.obtainLock(pFormIdLockId, lockedResourceName, TaskLockType.WORKSHEET_CREATION)) { locked = true; } formIdTaskLock = null; } catch (ODKTaskLockException e1) { e1.printStackTrace(); // Occasionally expected... } if (!locked) { return; } try { if (t.getRequestDate().before(form.getCreationDate())) { // form is newer, so the task must not refer to this form definition... doMarkAsComplete(t); } else { // worksheet creation request should have been created after the form... doWorksheetCreator(logger); } } catch (Exception e2) { // some other unexpected exception... logger.error("worksheetCreator: " + miscTasksKey.toString() + " form " + form.getFormId() + " Unexpected exception from work body: " + e2.toString()); e2.printStackTrace(); } finally { formIdTaskLock = ds.createTaskLock(user); try { for (int i = 0; i < 10; i++) { if (formIdTaskLock.releaseLock(pFormIdLockId, lockedResourceName, TaskLockType.WORKSHEET_CREATION)) break; try { Thread.sleep(1000); } catch (InterruptedException e) { // just move on, this retry mechanism // is to make things nice } } } catch (ODKTaskLockException e) { e.printStackTrace(); } } }
From source file:org.opendatakit.aggregate.task.WorksheetCreatorWorkerImpl.java
public final void doWorksheetCreator(Log logger) { try {//from ww w . ja v a 2 s .c om // get spreadsheet GoogleSpreadsheet spreadsheet = getGoogleSpreadsheetWithName(); // verify form has a spreadsheet element if (spreadsheet == null) { throw new ODKExternalServiceException("unable to find spreadsheet"); } // generate worksheets try { spreadsheet.generateWorksheets(cc); logger.info("doWorksheetCreator: " + miscTasksKey.toString() + " form " + form.getFormId() + " Successful worksheet creation!"); } catch (AuthenticationException e) { logger.error("doWorksheetCreator: " + miscTasksKey.toString() + " form " + form.getFormId() + " Exception: " + e.toString()); throw new ODKExternalServiceCredentialsException(e); } catch (ODKExternalServiceException e) { logger.error("doWorksheetCreator: " + miscTasksKey.toString() + " form " + form.getFormId() + " Exception: " + e.toString()); throw e; } catch (Exception e) { logger.error("doWorksheetCreator: " + miscTasksKey.toString() + " form " + form.getFormId() + " Exception: " + e.toString()); throw new ODKExternalServiceException(e); } // the above may have taken a while -- re-fetch the data to see if it has changed... MiscTasks r = new MiscTasks(miscTasksKey, cc); if (attemptCount.equals(r.getAttemptCount())) { // still the same attempt... // if we need to upload submissions, start a task to do so UploadSubmissions us = (UploadSubmissions) cc.getBean(BeanDefs.UPLOAD_TASK_BEAN); if (!esType.equals(ExternalServicePublicationOption.STREAM_ONLY)) { us.createFormUploadTask(spreadsheet.getFormServiceCursor(), true, cc); } doMarkAsComplete(r); } } catch (Exception e) { logger.error("doWorksheetCreator: " + miscTasksKey.toString() + " form " + form.getFormId() + " Initiating failure recovery: " + e.toString()); failureRecovery(e); } }
From source file:org.opendatakit.api.odktables.FileManifestService.java
/** * * @param httpHeaders// w w w.ja v a 2s .c o m * @param odkClientVersion * @return {@link OdkTablesFileManifest} of all the files meeting the filter criteria. * @throws ODKOverQuotaException * @throws ODKEntityNotFoundException * @throws ODKTaskLockException * @throws ODKDatastoreException * @throws PermissionDeniedException */ @GET @ApiOperation(value = "Returns a list of application-level files.", response = OdkTablesFileManifest.class) @Path("{odkClientVersion}") @Produces({ MediaType.APPLICATION_JSON, ApiConstants.MEDIA_TEXT_XML_UTF8, ApiConstants.MEDIA_APPLICATION_XML_UTF8 }) public Response /* OdkTablesFileManifest */ getAppLevelFileManifest(@Context HttpHeaders httpHeaders, @PathParam("odkClientVersion") String odkClientVersion) throws ODKEntityNotFoundException, ODKOverQuotaException, PermissionDeniedException, ODKDatastoreException, ODKTaskLockException { FileManifestManager manifestManager = new FileManifestManager(appId, odkClientVersion, cc); OdkTablesFileManifest manifest = null; Log log = LogFactory.getLog(FileManifestService.class); // retrieve the incoming if-none-match eTag... List<String> eTags = httpHeaders.getRequestHeader(HttpHeaders.IF_NONE_MATCH); String eTag = (eTags == null || eTags.isEmpty()) ? null : eTags.get(0); DbManifestETagEntity eTagEntity = null; try { try { eTagEntity = DbManifestETags.getTableIdEntry(DbManifestETags.APP_LEVEL, cc); } catch (ODKEntityNotFoundException e) { // ignore... } if (eTag != null && eTagEntity != null && eTag.equals(eTagEntity.getManifestETag())) { log.info("The etag about to be returned for Not Modified is " + eTag); return Response.status(Status.NOT_MODIFIED).header(HttpHeaders.ETAG, eTag) .header(ApiConstants.OPEN_DATA_KIT_VERSION_HEADER, ApiConstants.OPEN_DATA_KIT_VERSION) .header("Access-Control-Allow-Origin", "*") .header("Access-Control-Allow-Credentials", "true").build(); } // we want just the app-level files. manifest = manifestManager.getManifestForAppLevelFiles(); } catch (ODKDatastoreException e) { log.error("Datastore exception in getting the file manifest"); e.printStackTrace(); } if (manifest == null) { return Response.status(Status.INTERNAL_SERVER_ERROR).entity("Unable to retrieve manifest.") .header(ApiConstants.OPEN_DATA_KIT_VERSION_HEADER, ApiConstants.OPEN_DATA_KIT_VERSION) .header("Access-Control-Allow-Origin", "*").header("Access-Control-Allow-Credentials", "true") .build(); } else { String newETag = Integer.toHexString(manifest.hashCode()); // create a new eTagEntity if there isn't one already... if (eTagEntity == null) { eTagEntity = DbManifestETags.createNewEntity(DbManifestETags.APP_LEVEL, cc); eTagEntity.setManifestETag(newETag); eTagEntity.put(cc); } else if (!newETag.equals(eTagEntity.getManifestETag())) { log.error("App-level Manifest ETag does not match computed value!"); eTagEntity.setManifestETag(newETag); eTagEntity.put(cc); } // and whatever the eTag is in that entity is the eTag we should return... eTag = eTagEntity.getManifestETag(); UriBuilder uriBuilder = info.getBaseUriBuilder(); uriBuilder.path(OdkTables.class); //UriBuilder uriBuilder = UriBuilder.fromResource(OdkTables.class); uriBuilder.path(OdkTables.class, "getFilesService"); // now supply the downloadUrl... for (OdkTablesFileManifestEntry entry : manifest.getFiles()) { URI self = uriBuilder.clone().path(FileService.class, "getFile") .build(ArrayUtils.toArray(appId, odkClientVersion, entry.filename), false); try { entry.downloadUrl = self.toURL().toExternalForm(); } catch (MalformedURLException e) { e.printStackTrace(); throw new IllegalArgumentException("Unable to convert to URL"); } } log.info("The etag about to be returned for OK is " + eTag); return Response.ok(manifest).header(HttpHeaders.ETAG, eTag) .header(ApiConstants.OPEN_DATA_KIT_VERSION_HEADER, ApiConstants.OPEN_DATA_KIT_VERSION) .header("Access-Control-Allow-Origin", "*").header("Access-Control-Allow-Credentials", "true") .build(); } }
From source file:org.opendatakit.common.datamodel.DeleteHelper.java
public static void deleteDamagedSubmission(TopLevelDynamicBase tle, Set<DynamicCommonFieldsBase> backingObjects, CallingContext cc) throws ODKDatastoreException { Log logger = LogFactory.getLog(DeleteHelper.class); Set<DynamicDocumentBase> documents = new TreeSet<DynamicDocumentBase>( DynamicCommonFieldsBase.sameTableName); Set<DynamicAssociationBase> associations = new TreeSet<DynamicAssociationBase>( DynamicCommonFieldsBase.sameTableName); Set<DynamicBase> groups = new TreeSet<DynamicBase>(DynamicCommonFieldsBase.sameTableName); for (DynamicCommonFieldsBase dcb : backingObjects) { if (dcb instanceof DynamicDocumentBase) { documents.add((DynamicDocumentBase) dcb); } else if (dcb instanceof DynamicAssociationBase) { associations.add((DynamicAssociationBase) dcb); } else if (!(dcb instanceof TopLevelDynamicBase)) { groups.add((DynamicBase) dcb); }/*from w w w. j a v a 2 s . c o m*/ } logger.info("deleteDamagedSubmissions begin purging records for badTopLevelEntity: " + tle.getUri()); // delete documents for (DynamicDocumentBase dd : documents) { Query q = cc.getDatastore().createQuery(dd, "purge(damaged) - documents", cc.getCurrentUser()); q.addFilter(dd.topLevelAuri, FilterOperation.EQUAL, tle.getUri()); List<? extends CommonFieldsBase> results = q.executeQuery(); for (CommonFieldsBase c : results) { cc.getDatastore().deleteEntity(c.getEntityKey(), cc.getCurrentUser()); } } // delete associations for (DynamicAssociationBase dd : associations) { Query q = cc.getDatastore().createQuery(dd, "purge(damaged) - associations", cc.getCurrentUser()); q.addFilter(dd.topLevelAuri, FilterOperation.EQUAL, tle.getUri()); List<? extends CommonFieldsBase> results = q.executeQuery(); for (CommonFieldsBase c : results) { cc.getDatastore().deleteEntity(c.getEntityKey(), cc.getCurrentUser()); } } // delete groups or choices for (DynamicBase dd : groups) { Query q = cc.getDatastore().createQuery(dd, "purge(damaged) - groups", cc.getCurrentUser()); q.addFilter(dd.topLevelAuri, FilterOperation.EQUAL, tle.getUri()); List<? extends CommonFieldsBase> results = q.executeQuery(); for (CommonFieldsBase c : results) { cc.getDatastore().deleteEntity(c.getEntityKey(), cc.getCurrentUser()); } } // delete top level entity cc.getDatastore().deleteEntity(tle.getEntityKey(), cc.getCurrentUser()); logger.info("deleteDamagedSubmissions end purging records for badTopLevelEntity: " + tle.getUri()); }
From source file:org.opendatakit.common.security.Realm.java
@Override public void afterPropertiesSet() throws Exception { if (realmString == null) { throw new IllegalStateException("realmString (e.g., mydomain.org ODK Aggregate 1.0) must be specified"); }//w ww . jav a 2s .com Log log = LogFactory.getLog(Realm.class); log.info("Version: " + UIConsts.VERSION_STRING); log.info("Hostname: " + hostname); log.info("Port: " + Integer.toString(port)); log.info("SecurePort: " + Integer.toString(securePort)); log.info("SslIsRequired: " + (sslIsRequired ? "yes" : "no")); log.info("SslIsAvailable: " + (sslIsAvailable ? "yes" : "no")); log.info("RealmString: " + realmString); log.info("isGaeEnvironment: " + (isGaeEnvironment ? "yes" : "no")); }
From source file:org.opendatakit.common.security.spring.UserServiceImpl.java
@Override public void afterPropertiesSet() throws Exception { if (realm == null) { throw new IllegalStateException("realm must be configured"); }// w w w.ja v a2s . c o m if (datastore == null) { throw new IllegalStateException("datastore must be configured"); } if (superUserEmail == null) { throw new IllegalStateException("superUserEmail must be configured"); } if (superUserEmail.length() == 0) { superUserEmail = null; } if (superUserEmail != null && (!superUserEmail.startsWith(SecurityUtils.MAILTO_COLON) || !superUserEmail.contains(SecurityUtils.AT_SIGN))) { throw new IllegalStateException("superUserEmail is malformed. " + "Must be of the form 'mailto:user@gmail.com' or other supported OAuth2 provider."); } Log log = LogFactory.getLog(UserServiceImpl.class); log.info("superUserEmail: " + superUserEmail); log.info("superUserUsername: " + superUserUsername); reloadPermissions(); }
From source file:org.opendatakit.configuration.TestUserServiceConfiguration.java
@Bean public RoleHierarchy hierarchicalRoleRelationships() throws ODKDatastoreException, PropertyVetoException { Log logger = LogFactory.getLog(TestUserServiceConfiguration.class); logger.info("Setting up hierarchicalRoleRelationships"); RoleHierarchyImpl roleHierarchyImpl = new RoleHierarchyImpl(); roleHierarchyImpl.setDatastore(testDataConfiguration.datastore()); roleHierarchyImpl.setUserService(userService()); return roleHierarchyImpl; }