use of org.motechproject.mds.dto.EntityDto in project motech by motech.
the class LookupProcessorTest method shouldProcessMethodWithLookupFields.
@Test
public void shouldProcessMethodWithLookupFields() throws NoSuchMethodException {
FieldDto arg1Field = new FieldDto("arg1", "Arg1", TypeDto.INTEGER);
FieldDto secondArgumentField = new FieldDto("secondArgument", "Second Argument", TypeDto.STRING);
lookupProcessor.setEntityProcessingResult(Arrays.asList(mockEntityProcessorOutput(new EntityDto(TestClass.class.getName()), Arrays.asList(arg1Field, secondArgumentField))));
when(paranamer.lookupParameterNames(getTestMethod(1))).thenReturn(argNames);
Method method = getTestMethod(1);
lookupProcessor.process(method);
Map<String, List<LookupDto>> elements = lookupProcessor.getProcessingResult();
assertTrue(elements.containsKey(TEST_CLASS_NAME));
List<LookupDto> list = elements.get(TEST_CLASS_NAME);
LookupDto expected = new LookupDto("Test Method 1", true, false, asList(lookupFieldDto("arg1"), lookupFieldDto("secondArgument", "LIKE")), true, "testMethod1", asList("arg1", "secondArgument"), true);
assertEquals(1, list.size());
assertEquals(expected, list.get(0));
}
use of org.motechproject.mds.dto.EntityDto in project motech by motech.
the class LookupProcessorTest method shouldNotCreateIndexForLookup.
@Test
public void shouldNotCreateIndexForLookup() throws Exception {
FieldDto arg1Field = new FieldDto("arg1", "Arg1", TypeDto.INTEGER);
FieldDto secondArgumentField = new FieldDto("secondArgument", "Second Argument", TypeDto.STRING);
lookupProcessor.setEntityProcessingResult(Arrays.asList(mockEntityProcessorOutput(new EntityDto(TestClass.class.getName()), Arrays.asList(arg1Field, secondArgumentField))));
when(paranamer.lookupParameterNames(getTestMethod(5))).thenReturn(argNames);
Method method = getTestMethod(5);
lookupProcessor.process(method);
Map<String, List<LookupDto>> elements = lookupProcessor.getProcessingResult();
assertTrue(elements.containsKey(TEST_CLASS_NAME));
List<LookupDto> list = elements.get(TEST_CLASS_NAME);
LookupDto expected = new LookupDto("Test Method 5", true, false, asList(lookupFieldDto("arg1"), lookupFieldDto("secondArgument", "LIKE")), true, "testMethod5", new ArrayList<>(), false);
assertEquals(1, list.size());
assertEquals(expected, list.get(0));
}
use of org.motechproject.mds.dto.EntityDto in project motech by motech.
the class LookupProcessorTest method shouldProcessMethodWithSetParam.
@Test
public void shouldProcessMethodWithSetParam() throws NoSuchMethodException {
FieldDto arg0Field = new FieldDto("arg0Field", "Arg 0 Field", TypeDto.STRING);
FieldDto setField = new FieldDto("setField", "Range Field", TypeDto.STRING);
FieldDto regularField = new FieldDto("regularField", "Regular Field", TypeDto.STRING);
FieldDto setFieldDouble = new FieldDto("setFieldDouble", "Set Field", TypeDto.DOUBLE);
EntityProcessorOutput eop = mockEntityProcessorOutput(new EntityDto(TestClass.class.getName()), Arrays.asList(arg0Field, setField, regularField, setFieldDouble));
lookupProcessor.setEntityProcessingResult(Arrays.asList(eop));
LookupFieldDto[][] expectedFields = { { lookupFieldDto("arg0"), lookupFieldDto("set", SET) }, { lookupFieldDto("regularField"), lookupFieldDto("setField", SET) } };
String[][] expectedFieldsOrder = { { "arg0", "range" }, { "regularField", "rangeField" } };
// test two methods, one with @LookupField annotations, second without
for (int i = 0; i < 2; i++) {
Method method = getTestMethodWithSetParam(i);
when(paranamer.lookupParameterNames(method)).thenReturn(new String[] { "arg0", "set" });
LookupDto expectedLookup = new LookupDto("Test Method With Set Param " + i, true, false, asList(expectedFields[i]), true, "testMethodWithSetParam" + i, asList(expectedFieldsOrder[i]), true);
lookupProcessor.process(method);
Map<String, List<LookupDto>> elements = lookupProcessor.getProcessingResult();
assertTrue(elements.containsKey(TEST_CLASS_NAME));
List<LookupDto> list = elements.get(TEST_CLASS_NAME);
assertEquals(1, list.size());
assertEquals(expectedLookup, list.get(0));
assertEquals(asList(VALUE, SET), extract(list.get(0).getLookupFields(), on(LookupFieldDto.class).getType()));
lookupProcessor.clear();
}
}
use of org.motechproject.mds.dto.EntityDto in project motech by motech.
the class EntitySorterTest method setUpEntities.
@Before
public void setUpEntities() {
book = new EntityDto("Book");
author = new EntityDto("Author");
authorFieldInBook = fieldDto("author", ManyToManyRelationship.class);
authorFieldInBook.addMetadata(new MetadataDto(RELATED_CLASS, "Author"));
FieldDto bookFieldInAuthor = fieldDto("book", ManyToManyRelationship.class);
bookFieldInAuthor.addMetadata(new MetadataDto(RELATED_CLASS, "Book"));
when(schemaHolder.getFields(book)).thenReturn(singletonList(authorFieldInBook));
when(schemaHolder.getFields(author)).thenReturn(singletonList(bookFieldInAuthor));
entity1 = new EntityDto("Entity1");
entity2 = new EntityDto("Entity2");
entity3 = new EntityDto("Entity3");
FieldDto entity1Field = fieldDto("entity1", OneToOneRelationship.class);
entity1Field.addMetadata(new MetadataDto(RELATED_CLASS, "Entity2"));
FieldDto entity2Field = fieldDto("entity2", OneToOneRelationship.class);
entity2Field.addMetadata(new MetadataDto(RELATED_CLASS, "Entity3"));
when(schemaHolder.getFields(entity1)).thenReturn(singletonList(entity1Field));
when(schemaHolder.getFields(entity2)).thenReturn(singletonList(entity2Field));
parentEntity = new EntityDto("Parent");
childEntity = new EntityDto("Child");
childEntity.setSuperClass("Parent");
binaryTree = new EntityDto("Binary tree");
FieldDto leftChild = fieldDto("leftChild", "Left child", OneToOneRelationship.class);
leftChild.addMetadata(new MetadataDto(RELATED_CLASS, "Binary tree"));
FieldDto rightChild = fieldDto("rightChild", "Right child", OneToOneRelationship.class);
rightChild.addMetadata(new MetadataDto(RELATED_CLASS, "Binary tree"));
when(schemaHolder.getFields(binaryTree)).thenReturn(asList(leftChild, rightChild));
entity1.setRecordHistory(true);
entity2.setRecordHistory(true);
entity3.setRecordHistory(true);
book.setRecordHistory(true);
author.setRecordHistory(true);
parentEntity.setRecordHistory(true);
childEntity.setRecordHistory(true);
binaryTree.setRecordHistory(true);
}
use of org.motechproject.mds.dto.EntityDto in project motech by motech.
the class BaseInstanceIT method setUpEntity.
private void setUpEntity() throws Exception {
String entityClass = getEntityClassName();
entity = new EntityDto(entityClass);
entity.setRecordHistory(true);
entity = entityService.createEntity(entity);
entityService.addFields(entity, getEntityFields());
TrackingDto tracking = entityService.getAdvancedSettings(entity.getId(), true).getTracking();
tracking.setAllowCreateEvent(false);
tracking.setAllowUpdateEvent(false);
tracking.setAllowDeleteEvent(false);
entityService.updateTracking(entity.getId(), tracking);
SchemaHolder schemaHolder = entityService.getSchema();
mdsConstructor.constructEntities(schemaHolder);
PersistenceManagerFactory factory = getDataPersistenceManagerFactory();
if (null == factory.getMetadata(entityClass)) {
factory.registerMetadata(metadataHolder.getJdoMetadata());
}
CtClass ctClass = MotechClassPool.getDefault().get(getRepositoryClass());
MDSClassLoader.getInstance().safeDefineClass(getRepositoryClass(), ctClass.toBytecode());
ctClass = MotechClassPool.getDefault().get(getInterfaceClass());
MDSClassLoader.getInstance().safeDefineClass(getInterfaceClass(), ctClass.toBytecode());
ctClass = MotechClassPool.getDefault().get(getServiceClass());
MDSClassLoader.getInstance().safeDefineClass(getServiceClass(), ctClass.toBytecode());
}
Aggregations