@SuppressWarnings("unchecked") private void addToCopy( StringBuilder sb, SubDocument subDocument, String[] orderedFieldNames, String[] orderedAttributeNames) { for (int i = 0; i < orderedFieldNames.length; i++) { String fieldName = orderedFieldNames[i]; String attName = orderedAttributeNames[i]; if (fieldName.equals(SubDocTable.DID_COLUMN_NAME)) { sb.append(subDocument.getDocumentId()); } else if (fieldName.equals(SubDocTable.INDEX_COLUMN_NAME)) { Integer index = translateSubDocIndexToDatabase(subDocument.getIndex()); if (index == null) { sb.append("\\N"); } else { sb.append(index); } } else { subDocument.getValue(attName).accept(PostgreSQLValueToCopyConverter.INSTANCE, sb); } sb.append('\t'); } sb.replace(sb.length() - 1, sb.length(), "\n"); }
@Override public void insertSubdocuments(String collection, SubDocType type, Iterable<? extends SubDocument> subDocuments) { try { SubDocTable table = meta.getCollectionSchema(collection).getSubDocTable(type); InsertSetMoreStep<?> insert = null; for (SubDocument subDocument : subDocuments) { assert subDocument.getType().equals(type); SubDocTableRecord record = new SubDocTableRecord(table, subDocTypeBuilderProvider); record.setDid(subDocument.getDocumentId()); record.setIndex(translateSubDocIndexToDatabase(subDocument.getIndex())); record.setSubDoc(subDocument); if (insert == null) { insert = dsl.insertInto(table).set(record); } else { insert = insert.newRecord().set(record); } } if (insert != null) { insert.execute(); } else { assert false : "Call to insertSubdocuments with an empty set of subdocuments"; LOGGER.warn("Call to insertSubdocuments with an empty set of subdocuments"); } } catch (DataAccessException ex) { //TODO: Change exception throw new RuntimeException(ex); } }