Search in sources :

Example 41 with ResourceId

use of org.activityinfo.model.resource.ResourceId in project activityinfo by bedatadriven.

the class CloneDatabaseHandler method copyReference.

/**
 * Copies a reference, changing references to forms within the source database
 * to the cloned forms in the target database.
 */
private ResourceId copyReference(ResourceId sourceFormId) {
    switch(sourceFormId.getDomain()) {
        // Reference the NEW database's partner form
        case CuidAdapter.PARTNER_FORM_CLASS_DOMAIN:
            ResourceId partnerId = CuidAdapter.partnerFormId(targetDb.getId());
            typeIdMapping.put(sourceFormId, partnerId);
            return partnerId;
        // Reference the NEW database's project form
        case CuidAdapter.PROJECT_CLASS_DOMAIN:
            ResourceId projectId = CuidAdapter.projectFormClass(targetDb.getId());
            typeIdMapping.put(sourceFormId, projectId);
            return projectId;
        // the reference to point to the clone of that form
        case CuidAdapter.ACTIVITY_DOMAIN:
            int sourceActivityId = CuidAdapter.getLegacyIdFromCuid(sourceFormId);
            Activity targetActivity = this.activityMapping.get(sourceActivityId);
            if (targetActivity != null) {
                return CuidAdapter.activityFormClass(targetActivity.getId());
            } else {
                // reference as-is
                return sourceFormId;
            }
        // could be an administrative level form, then don't change the reference at all.
        default:
            return sourceFormId;
    }
}
Also used : ResourceId(org.activityinfo.model.resource.ResourceId)

Example 42 with ResourceId

use of org.activityinfo.model.resource.ResourceId in project activityinfo by bedatadriven.

the class CloneDatabaseHandler method copyFormClass.

private FormClass copyFormClass(final ResourceId sourceFormId, final ResourceId targetFormId) {
    FormClass sourceFormClass = formCatalog.get().getFormClass(sourceFormId);
    FormClass targetFormClass = new FormClass(targetFormId);
    if (sourceFormClass.isSubForm()) {
        targetFormClass.setSubFormKind(sourceFormClass.getSubFormKind());
        ResourceId targetParentFormId = this.typeIdMapping.get(sourceFormClass.getParentFormId().get());
        if (targetParentFormId == null) {
            LOGGER.severe(String.format("Parent (%s) of subform (%s) was not copied", sourceFormClass.getParentFormId(), sourceFormId));
            throw new IllegalStateException("Parent form has not been copied!");
        }
        targetFormClass.setParentFormId(targetParentFormId);
    }
    targetFormClass.setLabel(sourceFormClass.getLabel());
    targetFormClass.setDescription(sourceFormClass.getDescription());
    targetFormClass.setDatabaseId(CuidAdapter.databaseId(targetDb.getId()));
    Map<FormElement, FormElement> sourceIdToTargetFormElementMapping = Maps.newHashMap();
    copyFormElements(sourceFormClass, targetFormClass, sourceFormClass.getId(), targetFormClass.getId(), sourceIdToTargetFormElementMapping);
    correctRelevanceConditions(targetFormClass, sourceIdToTargetFormElementMapping);
    return targetFormClass;
}
Also used : ResourceId(org.activityinfo.model.resource.ResourceId) CuidAdapter.activityFormClass(org.activityinfo.model.legacy.CuidAdapter.activityFormClass)

Example 43 with ResourceId

use of org.activityinfo.model.resource.ResourceId in project activityinfo by bedatadriven.

the class LocationFieldBinding method buildAdminBindings.

private void buildAdminBindings(FormClass locationForm, FormTree formTree, int adminFieldIndex) {
    Optional<FormField> potentialAdminField = locationForm.getFieldIfPresent(CuidAdapter.field(locationForm.getId(), adminFieldIndex));
    if (potentialAdminField.isPresent()) {
        FormField adminField = potentialAdminField.get();
        Iterator<ResourceId> adminLevelRange = getRange(adminField);
        while (adminLevelRange.hasNext()) {
            ResourceId adminLevelId = adminLevelRange.next();
            buildLocationBindings(formTree.getFormClass(adminLevelId), formTree);
        }
    }
}
Also used : ResourceId(org.activityinfo.model.resource.ResourceId) FormField(org.activityinfo.model.form.FormField)

Example 44 with ResourceId

use of org.activityinfo.model.resource.ResourceId in project activityinfo by bedatadriven.

the class XFormBuilder method createLocationElements.

private void createLocationElements(FormField field, Body body) {
    ResourceId locationRef = extractLocationReference(field);
    if (locationRef != null) {
        body.addElement(createPresentationElement(locationName(field)));
        body.addElement(createPresentationElement(gps(field)));
    }
}
Also used : ResourceId(org.activityinfo.model.resource.ResourceId)

Example 45 with ResourceId

use of org.activityinfo.model.resource.ResourceId in project activityinfo by bedatadriven.

the class ResourceLocatorSyncImpl method getReferenceChoices.

@Override
public List<ReferenceChoice> getReferenceChoices(Collection<ResourceId> range) {
    ResourceId formId = Iterables.getOnlyElement(range);
    QueryModel queryModel = new QueryModel(formId);
    queryModel.selectResourceId().as("id");
    queryModel.selectExpr("label").as("label");
    ColumnSetBuilder builder = new ColumnSetBuilder(catalog.get(), new NullFormSupervisor());
    ColumnSet columnSet = builder.build(queryModel);
    ColumnView id = columnSet.getColumnView("id");
    ColumnView label = columnSet.getColumnView("label");
    List<ReferenceChoice> choices = Lists.newArrayList();
    for (int i = 0; i < columnSet.getNumRows(); i++) {
        ResourceId choiceId = ResourceId.valueOf(id.getString(i));
        String choiceLabel = label.getString(i);
        choices.add(new ReferenceChoice(new RecordRef(formId, choiceId), choiceLabel));
    }
    return choices;
}
Also used : ColumnSetBuilder(org.activityinfo.store.query.server.ColumnSetBuilder) ResourceId(org.activityinfo.model.resource.ResourceId) ColumnView(org.activityinfo.model.query.ColumnView) RecordRef(org.activityinfo.model.type.RecordRef) ColumnSet(org.activityinfo.model.query.ColumnSet) NullFormSupervisor(org.activityinfo.store.query.shared.NullFormSupervisor) QueryModel(org.activityinfo.model.query.QueryModel)

Aggregations

ResourceId (org.activityinfo.model.resource.ResourceId)198 Test (org.junit.Test)42 FormClass (org.activityinfo.model.form.FormClass)41 FormField (org.activityinfo.model.form.FormField)34 RecordRef (org.activityinfo.model.type.RecordRef)30 JsonValue (org.activityinfo.json.JsonValue)21 FormTree (org.activityinfo.model.formTree.FormTree)18 ReferenceValue (org.activityinfo.model.type.ReferenceValue)17 FieldValue (org.activityinfo.model.type.FieldValue)16 FormInstance (org.activityinfo.model.form.FormInstance)15 HashMap (java.util.HashMap)14 QuantityType (org.activityinfo.model.type.number.QuantityType)13 ColumnSet (org.activityinfo.model.query.ColumnSet)12 QueryModel (org.activityinfo.model.query.QueryModel)12 EnumValue (org.activityinfo.model.type.enumerated.EnumValue)11 SubFormReferenceType (org.activityinfo.model.type.subform.SubFormReferenceType)11 ReferenceType (org.activityinfo.model.type.ReferenceType)10 EnumItem (org.activityinfo.model.type.enumerated.EnumItem)10 FormStorage (org.activityinfo.store.spi.FormStorage)10 ArrayList (java.util.ArrayList)9