use of org.motechproject.mds.dto.AdvancedSettingsDto in project motech by motech.
the class EntityControllerTest method shouldGetAdvancedSettingsForEntity.
@Test
public void shouldGetAdvancedSettingsForEntity() throws Exception {
AdvancedSettingsDto expected = new AdvancedSettingsDto();
RestOptionsDto restOptions = new RestOptionsDto();
List<String> fields = new LinkedList<>();
fields.add("field1");
fields.add("field2");
restOptions.setCreate(true);
restOptions.setFieldNames(fields);
expected.setId(1L);
expected.setEntityId(7L);
expected.setRestOptions(restOptions);
controller.perform(get("/entities/7/advanced")).andExpect(status().isOk()).andExpect(content().string(new ObjectMapper().writeValueAsString(expected)));
}
use of org.motechproject.mds.dto.AdvancedSettingsDto in project motech by motech.
the class EntityProcessor method process.
@Override
protected void process(AnnotatedElement element) {
BundleHeaders bundleHeaders = new BundleHeaders(getBundle());
EntityProcessorOutput entityProcessorOutput = new EntityProcessorOutput();
Class clazz = (Class) element;
Class<Entity> ann = ReflectionsUtil.getAnnotationClass(clazz, Entity.class);
Annotation annotation = AnnotationUtils.findAnnotation(clazz, ann);
if (null != annotation) {
String className = clazz.getName();
String name = ReflectionsUtil.getAnnotationValue(annotation, NAME, ClassName.getSimpleName(className));
String module = ReflectionsUtil.getAnnotationValue(annotation, MODULE, bundleHeaders.getName(), bundleHeaders.getSymbolicName());
String bundleSymbolicName = getBundle().getSymbolicName();
String namespace = ReflectionsUtil.getAnnotationValue(annotation, NAMESPACE);
String tableName = ReflectionsUtil.getAnnotationValue(annotation, TABLE_NAME);
boolean recordHistory = Boolean.parseBoolean(ReflectionsUtil.getAnnotationValue(annotation, HISTORY));
boolean nonEditable = Boolean.parseBoolean(ReflectionsUtil.getAnnotationValue(annotation, NON_EDITABLE));
EntityDto entity = getSchemaHolder().getEntityByClassName(className);
RestOptionsDto restOptions = new RestOptionsDto();
TrackingDto tracking = new TrackingDto();
Collection<FieldDto> fields;
if (entity == null) {
LOGGER.debug("Creating DDE for {}", className);
entity = new EntityDto(null, className, name, module, namespace, tableName, recordHistory, SecurityMode.EVERYONE, null, null, null, clazz.getSuperclass().getName(), Modifier.isAbstract(clazz.getModifiers()), false, bundleSymbolicName);
} else {
LOGGER.debug("DDE for {} already exists, updating if necessary", className);
AdvancedSettingsDto advancedSettings = getSchemaHolder().getAdvancedSettings(className);
restOptions = advancedSettings.getRestOptions();
tracking = advancedSettings.getTracking();
entity.setBundleSymbolicName(bundleSymbolicName);
entity.setModule(module);
}
if (!tracking.isModifiedByUser()) {
tracking.setRecordHistory(recordHistory);
tracking.setNonEditable(nonEditable);
}
setSecurityOptions(element, entity);
// per entity maxFetchDepth that will be passed to the Persistence Manager
setMaxFetchDepth(entity, annotation);
entityProcessorOutput.setEntityProcessingResult(entity);
fields = findFields(clazz, entity);
String versionField = getVersionFieldName(clazz);
addVersionMetadata(fields, versionField);
addDefaultFields(entity, fields);
restOptions = processRestOperations(clazz, restOptions);
restOptions = findRestFields(clazz, restOptions, fields);
updateUiChangedFields(fields, className);
updateResults(entityProcessorOutput, clazz, fields, restOptions, tracking, versionField);
add(entity);
processingResult.add(entityProcessorOutput);
MotechClassPool.registerDDE(entity.getClassName());
} else {
LOGGER.debug("Did not find Entity annotation in class: {}", clazz.getName());
}
}
use of org.motechproject.mds.dto.AdvancedSettingsDto in project motech by motech.
the class ExampleData method getPurgeAdvanced.
public AdvancedSettingsDto getPurgeAdvanced(Long entityId) {
AdvancedSettingsDto found = null;
for (AdvancedSettingsDto item : advancedSettings) {
if (item.getEntityId().equals(entityId)) {
found = item;
break;
}
}
if (null == found) {
found = new AdvancedSettingsDto();
found.setId(advancedSettings.size() + 1L);
found.setEntityId(entityId);
advancedSettings.add(found);
}
return found;
}
use of org.motechproject.mds.dto.AdvancedSettingsDto in project motech by motech.
the class Entity method advancedSettingsDto.
@NotPersistent
public AdvancedSettingsDto advancedSettingsDto() {
AdvancedSettingsDto advancedSettingsDto = new AdvancedSettingsDto();
RestOptionsDto restDto;
if (null == restOptions) {
restDto = new RestOptions(this).toDto();
} else {
restDto = restOptions.toDto();
}
List<LookupDto> indexes = new ArrayList<>();
for (Lookup lookup : getLookups()) {
indexes.add(lookup.toDto());
}
Tracking trackingMapping = getTracking();
TrackingDto trackingDto = (trackingMapping == null) ? new TrackingDto() : trackingMapping.toDto();
advancedSettingsDto.setIndexes(indexes);
advancedSettingsDto.setEntityId(getId());
advancedSettingsDto.setBrowsing(getBrowsingSettings().toDto());
advancedSettingsDto.setRestOptions(restDto);
advancedSettingsDto.setTracking(trackingDto);
return advancedSettingsDto;
}
use of org.motechproject.mds.dto.AdvancedSettingsDto in project motech by motech.
the class EntityServiceImpl method editAdvancedForDraft.
private void editAdvancedForDraft(EntityDraft draft, DraftData draftData) {
AdvancedSettingsDto advancedDto = draft.advancedSettingsDto();
String path = draftData.getPath();
List value = (List) draftData.getValue(DraftData.VALUE);
entityValidator.validateAdvancedSettingsEdit(draft, path);
FieldHelper.setField(advancedDto, path, value);
setLookupMethodNames(advancedDto);
draft.updateAdvancedSetting(advancedDto);
allEntityDrafts.update(draft);
}
Aggregations