private void insertMapping(String target, String source) { List<Function> targetQuery = parse(target); if (targetQuery != null) { final boolean isValid = validator.validate(targetQuery); if (isValid) { try { OBDAModel mapcon = obdaModel; URI sourceID = dataSource.getSourceID(); System.out.println(sourceID.toString() + " \n"); OBDASQLQuery body = dataFactory.getSQLQuery(source); System.out.println(body.toString() + " \n"); OBDAMappingAxiom newmapping = dataFactory.getRDBMSMappingAxiom(txtMappingID.getText().trim(), body, targetQuery); System.out.println(newmapping.toString() + " \n"); if (mapping == null) { // Case when we are creating a new mapping mapcon.addMapping(sourceID, newmapping); } else { // Case when we are updating an existing mapping mapcon.updateMappingsSourceQuery(sourceID, mapping.getId(), body); mapcon.updateTargetQueryMapping(sourceID, mapping.getId(), targetQuery); mapcon.updateMapping(sourceID, mapping.getId(), txtMappingID.getText().trim()); } } catch (DuplicateMappingException e) { JOptionPane.showMessageDialog( this, "Error while inserting mapping: " + e.getMessage() + " is already taken"); return; } parent.setVisible(false); parent.dispose(); } else { // List of invalid predicates that are found by the validator. Vector<String> invalidPredicates = validator.getInvalidPredicates(); String invalidList = ""; for (String predicate : invalidPredicates) { invalidList += "- " + predicate + "\n"; } JOptionPane.showMessageDialog( this, "This list of predicates is unknown by the ontology: \n" + invalidList, "New Mapping", JOptionPane.WARNING_MESSAGE); } } }