Search in sources :

Example 1 with FormEntity

use of org.activityinfo.store.hrd.entity.FormEntity in project activityinfo by bedatadriven.

the class AuditLogWriter method writeForm.

public void writeForm(FormStorageProvider catalog, ResourceId formId) throws IOException {
    FormStorage formStorage = catalog.getForm(formId).get();
    FormClass formClass = formStorage.getFormClass();
    Key<FormEntity> parentKey = FormEntity.key(formId);
    Query<FormRecordSnapshotEntity> query = Hrd.ofy().load().type(FormRecordSnapshotEntity.class).ancestor(parentKey);
    for (FormRecordSnapshotEntity snapshot : query) {
        User user;
        try {
            user = userCache.get((int) snapshot.getUserId());
        } catch (ExecutionException e) {
            throw new RuntimeException(e);
        }
        csv.writeLine(formatTime(snapshot.getTime()), snapshot.getType().name(), user.getEmail(), user.getName(), databaseId(), db.getName(), formId.asString(), formClass.getLabel(), // Field ID
        "", // Field Name
        "", snapshot.getRecordId().asString(), partner());
    }
}
Also used : FormRecordSnapshotEntity(org.activityinfo.store.hrd.entity.FormRecordSnapshotEntity) User(org.activityinfo.server.database.hibernate.entity.User) FormStorage(org.activityinfo.store.spi.FormStorage) FormClass(org.activityinfo.model.form.FormClass) FormEntity(org.activityinfo.store.hrd.entity.FormEntity) ExecutionException(java.util.concurrent.ExecutionException)

Example 2 with FormEntity

use of org.activityinfo.store.hrd.entity.FormEntity in project activityinfo by bedatadriven.

the class CreateOrUpdateForm method create.

private void create() {
    FormEntity rootEntity = new FormEntity();
    rootEntity.setId(formClass.getId());
    rootEntity.setVersion(1);
    rootEntity.setSchemaVersion(1);
    FormSchemaEntity formClassEntity = new FormSchemaEntity(formClass);
    formClassEntity.setSchemaVersion(1);
    ofy().save().entities(rootEntity, formClassEntity);
}
Also used : FormEntity(org.activityinfo.store.hrd.entity.FormEntity) FormSchemaEntity(org.activityinfo.store.hrd.entity.FormSchemaEntity)

Example 3 with FormEntity

use of org.activityinfo.store.hrd.entity.FormEntity in project activityinfo by bedatadriven.

the class CreateOrUpdateForm method update.

private void update(FormSchemaEntity formClassEntity) {
    FormEntity rootEntity = ofy().load().key(FormEntity.key(formClass)).safe();
    // Increment the version counter
    long newVersion = rootEntity.getVersion() + 1;
    rootEntity.setVersion(newVersion);
    rootEntity.setSchemaVersion(newVersion);
    // Update the schema
    formClassEntity.setSchema(formClass);
    formClassEntity.setSchemaVersion(newVersion);
    ofy().save().entities(rootEntity, formClassEntity);
}
Also used : FormEntity(org.activityinfo.store.hrd.entity.FormEntity)

Example 4 with FormEntity

use of org.activityinfo.store.hrd.entity.FormEntity in project activityinfo by bedatadriven.

the class CreateOrUpdateRecord method vrun.

@Override
public void vrun() {
    FormEntity rootEntity = ofy().load().key(FormEntity.key(formId)).safe();
    FormClass formClass = ofy().load().key(FormSchemaEntity.key(formId)).safe().readFormClass();
    long currentVersion = rootEntity.getVersion();
    long newVersion = currentVersion + 1;
    rootEntity.setVersion(newVersion);
    FormRecordEntity existingEntity = ofy().load().key(FormRecordEntity.key(formClass, update.getRecordId())).now();
    FormRecordEntity updated;
    RecordChangeType changeType;
    if (existingEntity != null) {
        updated = existingEntity;
        changeType = update.isDeleted() ? RecordChangeType.DELETED : RecordChangeType.UPDATED;
    } else {
        updated = new FormRecordEntity(formId, update.getRecordId());
        changeType = RecordChangeType.CREATED;
        if (update.isDeleted()) {
            throw new InvalidUpdateException("Creation of entity with deleted flag is not allowed.");
        }
        if (formClass.getParentFormId().isPresent()) {
            ResourceId parentId = update.getParentId();
            if (parentId == null) {
                throw new InvalidUpdateException("@parent is required for subform submissions");
            }
            updated.setParentRecordId(parentId);
        }
    }
    updated.setVersion(newVersion);
    updated.setSchemaVersion(rootEntity.getSchemaVersion());
    updated.setFieldValues(formClass, update.getChangedFieldValues());
    // Store a copy as a snapshot
    FormRecordSnapshotEntity snapshotEntity = new FormRecordSnapshotEntity(update.getUserId(), changeType, updated);
    if (update.isDeleted()) {
        ofy().save().entities(rootEntity, snapshotEntity);
        ofy().delete().entities(updated);
    } else {
        ofy().save().entities(rootEntity, updated, snapshotEntity);
    }
}
Also used : FormRecordSnapshotEntity(org.activityinfo.store.hrd.entity.FormRecordSnapshotEntity) RecordChangeType(org.activityinfo.store.spi.RecordChangeType) ResourceId(org.activityinfo.model.resource.ResourceId) FormEntity(org.activityinfo.store.hrd.entity.FormEntity) FormClass(org.activityinfo.model.form.FormClass) FormRecordEntity(org.activityinfo.store.hrd.entity.FormRecordEntity) InvalidUpdateException(org.activityinfo.store.query.server.InvalidUpdateException)

Example 5 with FormEntity

use of org.activityinfo.store.hrd.entity.FormEntity in project activityinfo by bedatadriven.

the class QueryVersions method run.

@Override
public List<RecordVersion> run() {
    Query<FormRecordSnapshotEntity> query;
    if (recordId != null) {
        Key<FormRecordEntity> recordKey = FormRecordEntity.key(formClass, recordId);
        query = ofy().load().type(FormRecordSnapshotEntity.class).ancestor(recordKey);
    } else {
        Key<FormEntity> rootKey = FormEntity.key(formClass);
        query = ofy().load().type(FormRecordSnapshotEntity.class).ancestor(rootKey).filter("parentRecordId", parentRecordId.asString());
    }
    List<RecordVersion> versions = new ArrayList<>();
    for (FormRecordSnapshotEntity snapshot : query.iterable()) {
        RecordVersion version = new RecordVersion();
        version.setRecordId(snapshot.getRecordId());
        version.setVersion(snapshot.getVersion());
        version.setUserId(snapshot.getUserId());
        version.setTime(snapshot.getTime().getTime());
        version.setType(snapshot.getType());
        if (formClass.isSubForm()) {
            version.setSubformKind(formClass.getSubFormKind());
            version.setSubformKey(subformKey(snapshot));
        }
        version.getValues().putAll(snapshot.getRecord().toFieldValueMap(formClass));
        versions.add(version);
    }
    return versions;
}
Also used : FormRecordSnapshotEntity(org.activityinfo.store.hrd.entity.FormRecordSnapshotEntity) RecordVersion(org.activityinfo.store.spi.RecordVersion) FormEntity(org.activityinfo.store.hrd.entity.FormEntity) FormRecordEntity(org.activityinfo.store.hrd.entity.FormRecordEntity) ArrayList(java.util.ArrayList)

Aggregations

FormEntity (org.activityinfo.store.hrd.entity.FormEntity)7 FormRecordSnapshotEntity (org.activityinfo.store.hrd.entity.FormRecordSnapshotEntity)4 FormClass (org.activityinfo.model.form.FormClass)3 ResourceId (org.activityinfo.model.resource.ResourceId)3 FormRecordEntity (org.activityinfo.store.hrd.entity.FormRecordEntity)3 FormSchemaEntity (org.activityinfo.store.hrd.entity.FormSchemaEntity)3 ArrayList (java.util.ArrayList)2 SQLException (java.sql.SQLException)1 Date (java.util.Date)1 Iterator (java.util.Iterator)1 List (java.util.List)1 ExecutionException (java.util.concurrent.ExecutionException)1 FormInstance (org.activityinfo.model.form.FormInstance)1 SubFormReferenceType (org.activityinfo.model.type.subform.SubFormReferenceType)1 User (org.activityinfo.server.database.hibernate.entity.User)1 CreateOrUpdateForm (org.activityinfo.store.hrd.op.CreateOrUpdateForm)1 ProjectTable (org.activityinfo.store.mysql.collections.ProjectTable)1 RecordCursor (org.activityinfo.store.mysql.cursor.RecordCursor)1 TableMapping (org.activityinfo.store.mysql.mapping.TableMapping)1 DatabaseCacheImpl (org.activityinfo.store.mysql.metadata.DatabaseCacheImpl)1