private EISDescriptor getEmployeeDescriptor() { EISDescriptor descriptor = new EISDescriptor(); descriptor.setJavaClass(Employee.class); descriptor.setDataTypeName("employee"); descriptor.descriptorIsAggregate(); EISDirectMapping firstNameMapping = new EISDirectMapping(); firstNameMapping.setAttributeName("firstName"); firstNameMapping.setXPath("first-name/text()"); descriptor.addMapping(firstNameMapping); EISOneToOneMapping projectMapping = new EISOneToOneMapping(); projectMapping.setReferenceClass(Project.class); projectMapping.setAttributeName("project"); projectMapping.dontUseIndirection(); XQueryInteraction projectInteraction = new XQueryInteraction(); projectInteraction.setFunctionName("read-project"); projectInteraction.setProperty("fileName", "project.xml"); projectInteraction.setXQueryString("project[@id='#project-id/text()']"); projectInteraction.setOutputResultPath("result"); projectMapping.setSelectionCall(projectInteraction); projectMapping.addForeignKeyFieldName("project-id/text()", "@id"); descriptor.addMapping(projectMapping); return descriptor; }
private ClassDescriptor getProjectDescriptor() { EISDescriptor descriptor = new EISDescriptor(); descriptor.setJavaClass(Project.class); descriptor.setDataTypeName("project"); descriptor.setPrimaryKeyFieldName("@id"); EISDirectMapping nameMapping = new EISDirectMapping(); nameMapping.setAttributeName("name"); nameMapping.setXPath("name/text()"); descriptor.addMapping(nameMapping); EISDirectMapping idMapping = new EISDirectMapping(); idMapping.setAttributeName("id"); idMapping.setXPath("@id"); descriptor.addMapping(idMapping); EISOneToOneMapping leaderMapping = new EISOneToOneMapping(); leaderMapping.setReferenceClass(Employee.class); leaderMapping.setAttributeName("leader"); leaderMapping.dontUseIndirection(); XQueryInteraction leaderInteraction = new XQueryInteraction(); leaderInteraction.setFunctionName("read-leader"); leaderInteraction.setProperty("fileName", "employee.xml"); leaderInteraction.setXQueryString("ns1:employee[first-name/text()='#leader/text()']"); leaderInteraction.setOutputResultPath("result"); leaderMapping.setSelectionCall(leaderInteraction); leaderMapping.addForeignKeyFieldName("leader/text()", "first-name/text()"); descriptor.addMapping(leaderMapping); // Insert XQueryInteraction insertCall = new XQueryInteraction(); insertCall.setXQueryString("project"); insertCall.setFunctionName("insert"); insertCall.setProperty("fileName", "project.xml"); descriptor.getQueryManager().setInsertCall(insertCall); // Read object XQueryInteraction readObjectCall = new XQueryInteraction(); readObjectCall.setFunctionName("read"); readObjectCall.setProperty("fileName", "project.xml"); readObjectCall.setXQueryString("project[@id='#@id']"); readObjectCall.setOutputResultPath("result"); descriptor.getQueryManager().setReadObjectCall(readObjectCall); // Read all XQueryInteraction readAllCall = new XQueryInteraction(); readAllCall.setFunctionName("read-all"); readAllCall.setProperty("fileName", "project.xml"); readAllCall.setXQueryString("project"); readAllCall.setOutputResultPath("result"); descriptor.getQueryManager().setReadAllCall(readAllCall); // Delete XQueryInteraction deleteCall = new XQueryInteraction(); deleteCall.setFunctionName("delete"); readAllCall.setProperty("fileName", "project.xml"); readObjectCall.setXQueryString("project[@id='#@id']"); descriptor.getQueryManager().setDeleteCall(deleteCall); // Update XQueryInteraction updateCall = new XQueryInteraction(); updateCall.setFunctionName("update"); readAllCall.setProperty("fileName", "project.xml"); readObjectCall.setXQueryString("project[@id='#@id']"); descriptor.getQueryManager().setUpdateCall(updateCall); return descriptor; }